这个问题与我的有关,并解释了Jquery中的.data
方法。
除了与HTML5data-*
元素属性的关系(<p class='foo_cl' data-bar='gee'>
例如),为什么还要编写代码:
$('body').data("my_lab", {some:"object"}); // §1
代替
$('body').my_lab = {some:"object"}; // §2
(我对Jquery选择器给出一个对象的情况最感兴趣,就像$('body')
上面的情况)
后者(§2)似乎比前者(§1)更易读,更短,而且我想效率更高。当然data
是一个Jquery选择器(但是我可以each
用来设置.my_lab
字段,等等...)
我什至可以考虑以难看的外观更改DOM元素
$('body')[0].my_lab = {some:"object"}; // §3 is ugly
(这可能是未定义的行为,请参阅此)
当然,my_lab
在JQuery实现中存在将字段名称与某些现有字段冲突的潜在问题。但我认为my_
在字段名称中使用一些常见的后缀(如)就足够了。
FWIW,我只对Linux上最新的Firefox(例如38或42)上的最新Jquery(例如Jquery 2.1.4)感兴趣。
换句话说,为什么不赞成在JQuery对象中添加我自己的字段?
通过做
$('body').my_lab = {some:"object"};
您正在将值设置为指定的jQuery包装器。您将无法使用另一个选择器重新访问数据:
$('body').my_lab = {some:"object"};
console.log($('body').my_lab); // will log undefined
这就是为什么使用数据基本上更可靠的原因
$('body').data('my_lab', {some:"object"});
console.log($('body').data("my_lab")); // will log {some: "object"}
对于第三个选项:$("body")[0].attr = { my : "object" }
part:
jQuery数据方法可防止在操作dom时/从页面中删除元素(通过删除绑定的数据和填充物)时潜在的内存泄漏,并避免属性冲突(如设置domElement现有属性和其他细微的事情)
因此,基本上,如果您的应用中装有jQuery,则没有真正的理由通过在dom元素和javascript数据之间进行手动绑定来重新发明轮子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句