为什么不更改jQuery $.fn.data()更新相应的html 5 data- *属性?

前端之家收集整理的这篇文章主要介绍了为什么不更改jQuery $.fn.data()更新相应的html 5 data- *属性?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
下面是一个简单的例子来说明行为:

给定这个html标记

<div data-company="Microsoft"></div>

和这个jQuery代码(使用jQuery 1.5.1):

// read the data
alert($("div").data("company"));
// returns Microsoft <<< OK!

// set the data
$("div").data("company","Apple");
alert($("div").data("company"));
// returns Apple <<< OK!

// attribute selector
alert($("div[data-company='Apple']").length);
// returns 0  <<< WHY???

// attribute selector again
alert($("div[data-company='Microsoft']").length);
// returns 1  <<< WHY???

// set the attribute directly
$("div").attr("data-company","Apple");
alert($("div[data-company='Apple']").length);
// now returns 1 <<< OK!

由于jQuery自动将HTML5 data- *导入jQuery的数据对象,因此当数据更改时,属性是否应该更新?

解决方法

通常,如果你使用.data()来访问/设置/修改DOM元素上的数据,则不需要往返.data()。因此,避免为每个.data()set / modify操作(.data()在jQuery.cache中存储其值)访问DOM的性能开销是有意义的。

如果你想自己强制往返行为,可以订阅“setData”或“changeData”事件,然后通过.attr()将这些事件中的.data()更新推送到相应的DOM元素。

原文链接:https://www.f2er.com/jquery/184636.html

猜你在找的jQuery相关文章