複選框回顯 選用prop()不用attr()

設置一個複選框回顯示
使用attr()添加checked屬性
可是在回顯的過程當中會使複選框出現混亂的狀況有一些並無回顯
若是給他添加一個checked的class就會致使複選框不可點擊這種作法是不對的
須要用prop替代code

function updateCheckboxState(data, type) {
         
            var elType = type ? ('#' + type + '_') : '#';
            for (var x in data) {
                if (data[x] == '1') {
                    $(elType + x).prop('checked', true);
                    // $(elType + x).addClass('checked');
                } else {
                    $(elType + x).prop('checked', false);
                    // $(elType + x).removeClass('checked');
                }
            }
        }

如今說一下爲何須要用prop()替代呢
使用attr()點擊 checkbox,結果都是 undefined
attr() prop()
二者分別是獲取/設置 attributes 和 properties 的方法element

何時使用attr(),何時使用prop()?
根據官方的建議:具備 true 和 false 兩個屬性的屬性,如 checked, selected 或者 disabled 使用prop(),其餘的使用 attr()rem

attr() 裏面,最關鍵的兩行代碼

elem.setAttribute( name, value + "" ); 

ret =  elem.getAttribute( name );

很明顯的看出來,使用的 DOM 的 API setAttribute() 和 getAttribute() 方法操做的屬性元素節點。get

prop() 裏面,最關鍵的兩行代碼

return ( elem[ name ] = value );

return elem[ name ];
能夠理解爲 document.getElementById(el)[name] = value,這是轉化成 element 的一個屬性。



或者
$('elType + x').attr('value',true/false)
相關文章
相關標籤/搜索