当前位置:  开发笔记 > 编程语言 > 正文

jquery中数据的用途?(vs将我自己的字段添加到Jquery对象)

如何解决《jquery中数据的用途?(vs将我自己的字段添加到Jquery对象)》经验,为你挑选了1个好方法。

这个问题与我的相关,并解释了Jquery中的.data方法.

除了与HTML5 data-*元素属性的关系(例如

,为什么)我将编码:

 $('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对象中添加我自己的字段会不受欢迎?



1> Pierre Gayva..:

通过做

$('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"}

对于第3个选项:$("body")[0].attr = { my : "object" }部分:

jQuery数据方法在从页面操作dom/remove元素时(通过删除绑定的数据和东西)防止潜在的内存泄漏,并避免属性冲突(如设置domElement现有属性和其他微妙的东西)

所以基本上,如果你在你的应用程序中有jQuery,你真的没有任何理由通过在dom元素和javascript数据之间进行手动绑定来重新发明轮子.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有