Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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时触发事件:1.7中的JQuery Livequery等效项_Javascript_Jquery_Livequery - Fatal编程技术网

Javascript 将元素添加到DOM时触发事件:1.7中的JQuery Livequery等效项

Javascript 将元素添加到DOM时触发事件:1.7中的JQuery Livequery等效项,javascript,jquery,livequery,Javascript,Jquery,Livequery,我想在页面上出现特定元素时触发事件(我不控制源页面-此isa Chrome扩展) 我已经读过有关的文件。然而,它似乎是在等待选择器上触发特定事件-单击事件-而不仅仅是在添加与选择器匹配的元素时 现在未维护的livequery插件中的等效项: $('a').livequery(function () { console.log('yaay a link was added'); }) 如果这是为chrome 18+设计的chrome扩展,那么您可以使用来自的功能。这将分配一个回调,该回调在D

我想在页面上出现特定元素时触发事件(我不控制源页面-此isa Chrome扩展)

我已经读过有关的文件。然而,它似乎是在等待选择器上触发特定事件-单击事件-而不仅仅是在添加与选择器匹配的元素时

现在未维护的livequery插件中的等效项:

$('a').livequery(function () {
  console.log('yaay a link was added');
})

如果这是为chrome 18+设计的chrome扩展,那么您可以使用来自的功能。这将分配一个回调,该回调在DOM发生任何更改时触发,然后您可以使用它来执行任何您想要的操作。它仍然很新,但还有一点

该页面的代码示例:

var insertedNodes = [];
var observer = new WebKitMutationObserver(function(mutations) {
 mutations.forEach(function(mutation) {
   for (var i = 0; i < mutation.addedNodes.length; i++)
     insertedNodes.push(mutation.addedNodes[i]);
 })
});
observer.observe(document, { childList: true });
console.log(insertedNodes);
var insertedNodes=[];
var observer=新的WebKit突变观察者(功能(突变){
突变。forEach(功能(突变){
对于(var i=0;i
更新:还注意到了一个可能更容易使用的

.livequery()
的工作原理
.livequery()
有两种用途:

  • 将事件类型作为第一个参数传递时
  • 当您将callback(函数)作为第一个参数传递时
在第一种情况下,您完全可以将其替换为当前使用的
.on()
或已弃用的
.live()
.delegate()
(如果您的jQuery版本早于1.7)

在第二种情况下,它看起来像是
.livequery()
覆盖了标准的DOM修改JS方法,或者将自身“挂钩”到这些方法中。为了模仿这种行为,你需要做一些类似的事情,或者只是重新设计你的脚本来避免这个障碍

如果您选择使用自己的实现,只需确保您不会犯与
.live()
开发人员所犯的错误相同的错误:将选择器从jQuery参数移动到模块的函数参数中:
jQuery(选择器)。live(…)
->
jQuery(…)。on(…,selector…)
,as不需要在准备脚本时执行(仅在某些内容发生更改时执行)

侦听添加到DOM中的新元素 您运气不好,因为没有广泛采用的事件负责侦听插入到DOM中的新DOM元素。您可以使用的可能事件列表如下:


我也遇到了这个问题:@nailer:我刚刚找到了
.livequery()
的另一个用例,当您向它传递函数时就是这种情况。这似乎是基于覆盖标准DOM修改JS方法(
.append()
.addClass()
等,如他们的页面所述),所以如果该功能确实是必要的,并且不能用更标准的东西替代,您可能应该遵循这种方式。回答得好,但遗憾的是,当我向DOM中添加事件时,示例代码实际上似乎没有触发。编辑:要尝试这个库…我必须承认我从来没有尝试过这个代码,这个答案主要是基于那篇文章-我假设你使用的是Chrome 18或更高版本?库工作正常,问题得到了回答。谢谢