Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 注意dom元素的创建?_Javascript_Jquery_Jquery Ui_Dom - Fatal编程技术网

Javascript 注意dom元素的创建?

Javascript 注意dom元素的创建?,javascript,jquery,jquery-ui,dom,Javascript,Jquery,Jquery Ui,Dom,所以,基本上我有一个插件,如果元素是在dom中创建的,我想调用它 例如,假设我有一个名为domWatch的插件,如果在调用它的选择器中创建了指定的选择器,它将运行该函数 因此: $('#container').domWatch('.mySelector',函数(元素){ $(element.myPlugin(); }); $('#container').append($('',{class:'mySelector'}))//新元素现在应该调用myPlugin插件。 这可能吗?听起来很像,尽管这

所以,基本上我有一个插件,如果元素是在dom中创建的,我想调用它

例如,假设我有一个名为domWatch的插件,如果在调用它的选择器中创建了指定的选择器,它将运行该函数

因此:

$('#container').domWatch('.mySelector',函数(元素){
$(element.myPlugin();
});
$('#container').append($('',{class:'mySelector'}))//新元素现在应该调用myPlugin插件。
这可能吗?

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


这里有一些。

看看这个聪明的黑客:。它使用CSS3动画来检测元素何时插入DOM

< P>创建“DOM元素时监听”的问题是性能命中,所以也许您应该考虑用不同的方法来解决问题。


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

如果您只针对非常现代的浏览器,您可以查看MutationObserver,它是为实现这一目标而设计的


这看起来像是一项针对以下人员的工作:

委派事件的优点是,它们可以从中处理事件 以后添加到文档中的子元素。通过选择一个元素,该元素保证在 已附加委派事件处理程序,您可以使用委派事件 避免频繁附加和删除事件处理程序。这 元素可以是视图中的容器元素 例如,模型视图控制器设计,或
文档
如果事件 处理程序希望监视文档中的所有冒泡事件。这个
文档
元素在 加载任何其他HTML,因此可以安全地在那里附加事件,而无需 正在等待文档准备就绪

您可以使用我为完全相同的目的开发的库(内部使用)。用法:


LiveQuery是一种实现这一点的方法,但是如果您能够在每次向dom追加内容时手动触发事件,那么它可能会有更好的性能。但是,它还没有在所有主流浏览器中实现。警告:不推荐使用变异事件,请改用变异观察者。
$('#container').domWatch('.mySelector', function(element){
    $(element).myPlugin();
});

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