jQuery文档说像jQuery.data()
一样是低级方法,建议使用.data()
来使用(不是说,而是考虑高级方法)。
所以,我的问题是:
.data()
?答案 0 :(得分:1)
'高水平'和低水平'方法根据它的抽象级别进行分类。
例如,
$('#test').hide();
这是一个高级抽象的例子,你只需要调用hide()来隐藏元素。
另一方面,
$('#test').css({'display':'none'});
这也是jQuery,但正在解释更多细节。因此它是低级别的.css()使我们能够为它提供更多选项。
在您的特定示例中,当它说.data()是一种更方便的方式时,它意味着它是低级别的,并且在如何使用它方面具有更大的灵活性。
答案 1 :(得分:1)
在编程语言中低级并不意味着坏或慢,其含义是基于它们的访问和抽象级别。低层通常在抽象层次结构中较低。例如C
是一种低级语言,因为它可以为您提供直接的汇编级编码,但它不会为您提供接口。 C++
是一种中级语言,因为它为您提供了像C这样的低级访问和带有Windows UI的高级抽象层。 Java
是一种高级语言,它只为您提供顶级编码环境,JVM
处理其他内存管理等。
同样,低级jQuery.data
,它使您可以访问存储在data
命名空间中的所有属性,还可以访问jQuery
本身和其他插件保存的所有数据。但$(....).data
仅为您提供高级访问权限,意味着它会抽象所有其他访问权限以及数据和命名空间,并且仅为您提供所需内容,仅data
selector
(在{{ 1}})。
所以,一般来说你要做到这一点 -
$(..)
或jQuery.data
$.data
或jQuery(....).data
答案 2 :(得分:1)
低级别方法访问速度较慢吗?
否,请检查此JS Perf测试。
jQuery.data($el, 'key', 'plop'); //faster
$el.data('key', 'plop'); //Approx 30% slower.
为什么说更方便的方式就像.data()?
.data()
:可以访问数据属性:
<div id="content" data-key="hey"></div>
$('#content').data('key', 'plop');
虽然 jQuery.Data()
不能。
总结:
如果您处理HTML5 data-*
属性或事件,请使用$.fn.data
在其他情况下,因绩效而使用$.data
/ jQuery.data()
注意:这只是一个考虑.data()
答案 3 :(得分:0)