Javascript 检测“钩住”的DOM元素

Javascript 检测“钩住”的DOM元素,javascript,object,jquery,Javascript,Object,Jquery,所以我有一套jQuery插件,非常基本的东西,但是我把代码分成插件,因为我不喜欢有一个巨大的jQuerydocument.ready函数来存储整个应用程序逻辑 每个插件都有一个析构函数,它基本上是我在插件原型对象中定义的一个函数。此函数用于解除插件使用的事件绑定,删除插件添加的DOM元素等 插件的初始化方式如下: $('.element').plugin(); 我有没有办法从另一个插件中获取所有附加了插件的元素,该插件应该替换主体HTML,这样我就可以调用析构函数了 我想将每个插件实例存储在一

所以我有一套jQuery插件,非常基本的东西,但是我把代码分成插件,因为我不喜欢有一个巨大的jQuerydocument.ready函数来存储整个应用程序逻辑

每个插件都有一个析构函数,它基本上是我在插件原型对象中定义的一个函数。此函数用于解除插件使用的事件绑定,删除插件添加的DOM元素等

插件的初始化方式如下:

$('.element').plugin();
我有没有办法从另一个插件中获取所有附加了插件的元素,该插件应该替换主体HTML,这样我就可以调用析构函数了


我想将每个插件实例存储在一个全局数组中,然后我可以从任何插件访问该数组。但是也许有一种更好的方法不使用全局状态?

我认为没有现成的方法来实现它。。。但是作为一个黑客,你可以在插件中的目标元素中添加一个类,然后使用该类获取小部件初始化的所有元素

$.fn.plugin = function(){
    this.addClass('my-plugin-class');
}
然后初始化

$(element).plugin()
使用插件获取所有元素

$('.my-plugin-class')....
但是如果它是一个jQuery UI小部件,那么您可以使用选择器$':UI widgetname',请参见编写的正确想法-只需通过使用特定类名标记受影响的DOM元素来删除作业的“footprint”

我只想补充一个想法。插件是库的方法,仅此而已。如果您需要构造函数的destroyer-只需为其制作另一个插件:

$.fn.overture = function (){...};// construct
$.fn.crescendo = function (){...};// more construct
$.fn.quietFarewell = function (){...};// destructor for everything above

$(...).overture().crescendo().quietFarewell(); 

当我构建jquery小部件时,我使用。它包括扩展$.expr[':'],以便可以选择实例化的小部件。这实际上是一个好主意,然后我可以选择并销毁与页面某个区域的元素挂钩的插件,如main.plugin