插件内部jquery数据方法的奇怪行为

Strange behaviour of jquery data method inside plugin

本文关键字:方法 内部 jquery 数据 插件      更新时间:2023-09-26

当我正常使用jQuery的数据方法时,没有问题。但我想在插件中使用它,以保存应用它的每个元素的设置。

问题是:它保存了第一次应用插件的每个元素的数据。例如,我将插件应用于$('div'),然后为$('#div1')设置一些值,并自动为$('#div2')设置相同的值。

http://jsfiddle.net/sX7AC/1/

这是一个Fiddle的例子,展示了我的意思。为什么会发生这种情况?当我尝试在插件之外做同样的事情时,它是有效的。

settings是一个对象。您正在使用此对象设置所有div的数据。当您调用height时,您正在更改该对象的字段。因此,其他div的值也将更新。。。(因为他们的"myPluginData"也指同一个对象)

如果您想将状态存储在该设置对象中,我建议将extend命令移动到each中(这样将为每个元素创建一个不同的对象)。

请参阅更新后的示例