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