2

So, basically I have a plugin that I want called on an element if it is created in the dom,

E.g. let's say I have a plugin called domWatch that runs the function if the specified selector gets created inside the selector it was called on.

so:

$('#container').domWatch('.mySelector', function(element){
    $(element).myPlugin();
});

$('#container').append($('<div />', {class: 'mySelector'})); //the new element should now have the myPlugin plugin called on it.

Is this possible to do?

4

5 回答 5

6

您可以使用我为完全相同的目的开发的到达.js库(在内部使用Mutation Observers)。用法:

$('#container').arrive('.mySelector', function(){
    $(this).myPlugin();
});
于 2014-03-31T19:51:58.923 回答
3

看看这个聪明的黑客:http ://www.backalleycoder.com/2012/04/25/i-want-a-damnodeinserted/ 。它使用 CSS3 动画来检测元素何时插入 DOM。

“侦听何时创建 DOM 元素”的问题是对性能的影响,因此也许您应该考虑使用不同的方法来解决您的问题。

我相信有很多更简单的方法可以实现您的目标。

于 2012-11-03T12:47:12.157 回答
1

听起来很像Live Query。尽管这确实涉及连续轮询,但确实会影响性能。

这里有一些演示

于 2012-11-03T12:41:27.260 回答
1

如果您只针对非常现代的浏览器,您可以查看专为该目标设计的MutationObserver 。

https://developer.mozilla.org/en-US/docs/DOM/MutationObserver

于 2012-11-03T12:48:09.807 回答
0

它看起来像是事件委托形式的.on()工作:

委托事件的优点是它们可以处理来自 以后添加到文档的后代元素的事件。通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需要。例如,此元素可以是模型-视图-控制器设计中视图的容器元素,或者document如果事件处理程序想要监视文档中的所有冒泡事件。在加载任何其他 HTML 之前,该 document元素在文档的头部可用,因此在此处附加事件是安全的,而无需等待文档准备好。

于 2013-01-08T09:42:22.117 回答