prop()、attr()和data()
设置元素属性,用attr()还是prop()?
对于取值为true /false的属性,如 checked/selected/readonly或者disabled,使用prop(),其他属性使用 attr()。
比如:$('input:checkbox').attr('checked',fasle)只有第一次有效,后面无效,使用prop才准确。
$.fn.attr()将数据直接存在元素的attribute节点上,通过F12可以在html标签中看到,数据内容只能为字符串。
‘data-name’整个作为属性名,通过$(element).data(name)/$(element).attr('data-name')/element.getAttribute('data-name')/ element.dataset['name']访问 。
一旦通过data()访问属性节点中'data-name’格式的数据,jQ将会创建一个副本,将name和值保存在jQuery内部。该数据副本和属性节点data-name中的数据两者互不影响,修改其中一个的值访问另一个时得不到修改过的值。
$.fn.data()将数据存在jQuery的内部,只能通过data()方法访问,且数据内容不受限制。F12看不见,通过$("[data-xxx=…]")选择器也找不到设了新值的元素。
不要混合使用data()和attr()方法。用attr('data-xxx',XXX)存元素标签中可见的属性;用data('xxx',XXX)存标签中不可见的动态数据。
以上皆为个人理解,如有错误之处,欢迎留言指正。