prop 和 attr 中一些羞羞的事變

弁言

頭幾天做一個迷你京東小項目標時刻涉及到一個全選的小功用,一開始用的是 attr,然則結果完整不是本身想要的,當商品按鈕點擊過一次后,attr就沒法對其狀況舉行變動,末了谷歌了一番發明需要用 prop 來替代。雖然結果題目處理了,然則本身照樣想弄懂 propattr 的區分.

版本運用差別

遇到題目我平常先會去查相干的官方文檔,可在 jq 的 api 中文文檔中沒有發明有價值的東西,只是發明實用的版本和觀點有所細微的差別。

attr : 設置或返回被選元素的屬性值.版本:1.0

prop : 獵取在婚配的元素集合的第一個元素的屬性值。版本:1.6+

從觀點中發明操縱的對象和運用也彷佛基礎雷同,然後帶着迷惑去舉行了一番試驗並去查閱了一些相干材料

示例代碼

<table>
        <thead>
            <tr><input type="checkbox" class="checkAll">全選</tr>
        </thead>
        <tbody>
            <tr><input class="item" type="checkbox">單選</tr>
            <tr><input class="item" type="checkbox">單選</tr>
            <tr><input class="item" type="checkbox">單選</tr>
            <tr><input class="item" type="checkbox">單選</tr>
            <tr><input class="item" type="checkbox">單選</tr>
            <tr><input class="item" type="checkbox">單選</tr>
        </tbody>
    </table>
$('.checkAll').click(function() {
  $('.item').attr('checked', this.checked);
});

題目形貌

當全選按鈕選中時單選按鈕悉數選中,當全選按鈕不選中時單選按鈕悉數不選中,只點全選按鈕時,重複頻頻都沒題目,然則假如點擊了个中一個單選按鈕,那這個單選按鈕就不會在像別的單選按鈕一樣追隨全選按鈕的狀況的轉變而轉變。

attr 和 prop 的實質

attrattribute 的縮寫,propproperty 的縮寫,都有屬性的意義,只不過 attr 是操縱 html 文檔節點屬性,prop 是操縱 js 對象屬性. attr 在 js 中運用的是 setAttributegetAttributeprop 直接運用原生 js 的 element[value]element[value]=key

attr 和 prop 的區分

attr 設置的屬性值只能是字符串範例,假如不是字符串範例,也會挪用其 toString() 要領,將其轉換成字符串範例。

prop 設置的屬性值能夠包含數組和對象在內的恣意範例

有關布爾值的屬性

1.6 以後, attr 返回的也是字符串範例, 選中或禁用直接返回 checked,selected,disabled。不然返回undefined處理我題目的癥結就是下面一句話

jQuery 以為:attribute 的 checked、selected、disabled 就是示意該屬性初始狀況的值,property 的 checked、selected、disabled 才示意該屬性及時狀況的值(值為 true 或 false)。

當涉及到 boolean 值時,比方 checkbox 如許的,有 truefalse 如許的布爾值的元素屬性,attributes 在頁面加載的時刻就被設置,而且一向堅持初始值,而 properties 則存儲着元素屬性的當前值。

所以當我沒有點擊單選按鈕的時刻,它就是沒被用戶點擊過的瀏覽器剛加載出來的初始狀況,此時能夠經由過程 attr 去設置並操控,當有用戶點擊的時刻,當前按鈕就不是初始狀況,attr天然也就沒法操控。

    原文作者:Hutchins
    原文地址: https://segmentfault.com/a/1190000014788155
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞