在jQuery中使用’data-attribute’而不是$ .data有什么好处?

我想知道使用数据分配到DOM而不是DOM的优势是什么

即假设我们说过HTML

foo! //Set attr data-me so it's foo! $('#foo').attr('data-me', 'yay'); //Retrieve the data 'yay' $('#foo').data('data-me'); 

除直接指配外:

 var myInput = $('#foo'); //Add some data $.data(myInput, 'data-me', 'yay'); //Retrieve the data 'yay' $.data(myInput, 'data-me'); 

我的理解是,后者的速度要快得多,因此我不能看到在不需要的时候在DOM中添加data-someAttr的意义吗?

它们用于不同的目的。 是的,看起来他们可以用来实现同样的目标,但在引擎盖下却存在差异。

  1. 虽然您可以在属性中保存简单值 ,但您无法保存DOM节点,因为您将创建 内存泄漏 。 你也不能保存对象,数组,函数等……

  2. $.attr()可能比$('selector').data()更快,但它并不比低级方法jQuery.data()快。 第一种数据方法比第二种方法具有更多的开销,但第二种方法不具备第一种数据方法的所有function。 例如, 它不会从data-属性中获取数据 。

因此,我认为最好在加载时使用data-属性,因此您可以使用$('selector').attr()提取数据,并使用$.data()处理应用程序状态。