我在jquery插件模式中看到了这段代码,并且注释部分提到我们可以使用jQuery.data函数将插件附加到DOM元素。我不明白的是如何使用这段代码。有人可以提供如何使用此功能并解释其重要性的示例吗?
$.fn[pluginName] = function (options) {
return $Extend(this).each(function () {
if (!$.data(this, 'plugin_' + pluginName)) {
$.data(this, 'plugin_' + pluginName,
new Plugin( this, options ));
}
});
};
答案 0 :(得分:1)
我认为您提供的代码的重点不允许重新初始化插件。
它正在做的是,当您第一次在元素上调用插件时,它会检查其data
以查看是否已设置属性'plugin_' + pluginName
。如果是的话,它什么也没做。如果尚未设置,则会调用new Plugin()
方法并将其存储在data
中。这样,它可以通过插件方法轻松检索。所有方法都必须使用$(this).data('plugin_' + pluginName)
来检索有关插件的任何内容,特别是对于该元素。
因此,如果您想进行2次插件调用,例如:
$(".class").specialPlugin({
key1: "value1"
});
$(".class2").specialPlugin({
key23: "value23"
});
然后,每个元素的数据将只具有特定于其原始设置的信息。
data
中实际存储的内容是new Plugin
返回的内容,并且可以包含许多内容的完整对象或原始options
对象的任何位置,以便于参考。