gpt4 book ai didi

javascript - jQuery:插件互通

转载 作者:行者123 更新时间:2023-11-29 20:23:16 26 4
gpt4 key购买 nike

问题是:我有一个 very complex plugin它在执行时会做很多不同的初始化和绑定(bind)。

我希望能够在同一个元素上多次运行同一个插件,为其提供不同的选项。在元素上运行一次后,某些初始化不需要在该元素上的后续执行中再次进行。

目前,插件代码在一个闭包中,它不知道同一插件在该元素上运行的其他时间。

当人们想要相互交流时,是否有一种模式可以遵循?

我在想这样的事情:

$.plugin = {
globalRefs = [];
}
$.fn.plugin = function() {
var that = {};
$.fn.plugin.id ++; //each execution gets its unique id

var privateFn = function() { ... };

that.privateFn = privateFn; //expose all useful inner functions to that.

$.plugin.globalRefs[$.fn.plugin.id] = that; //make that global
}
$.fn.plugin.id = 0;

最佳答案

您说的是“其他插件”,但不清楚您指的是什么;还有什么插件?他们需要彼此“了解”什么?

如果您只想维护状态,为什么不直接使用 jQuery data() 机制在目标 DOM 元素上存储您需要的任何内容?这将使您的插件了解以前的调用,并且还允许这些神秘的“其他插件”也使用该存储的数据。

// ...
$(theElement).data('pluginName', { 'fabulous': 'data' });

您使用此机制存储的数据可以是您喜欢的任何内容:

$(theElement).data('pluginName', {
'aNumber': 23.5,
'anArray': ['hello', 'world'],
'aFunction': function(arg) {
alert("wow a function! Here is the argument: " + arg);
}
'anObject': {
'more': 'stuff'
}
});

关于javascript - jQuery:插件互通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2788609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com