简单区别就是,attr操作HTML元素的属性,prop操作DOM元素的属性,因为DOM会解析某些HTML元素属性到自己身上,此时prop和attr都能操作这些属性。
prop()方法和attr()类似,但是HTML5规定有一种属性在DOM节点中可以没有值,只有出现与不出现两种,例如:
<inputid="test"type="radio"name="test"checkedvalue="1">
等价于:
<inputid="test"type="radio"name="test"checked="checked"value="1">
attr()和prop()对于属性checked处理:
var radio = $('#test'); radio.attr('checked'); // 'checked' radio.prop('checked'); // true
显然 prop()返回值更合理一些。
此时,用is()方法判断更好:
var radio = $('#test'); radio.is(':checked'); // true
类似的属性还有selected,处理时最好用is(‘:selected’)。
重点来了!!!
假如页面的标签是动态的,此时标签被过滤掉不在页面存在时,
radio.attr('checked'); // 'checked' radio.prop('checked'); // true
都无法获取到结果,只有用is()方法,标签不存在时,可以获取到 false值。