Javascript 将元素添加到DOM时触发事件:1.7中的JQuery Livequery等效项
我想在页面上出现特定元素时触发事件(我不控制源页面-此isa Chrome扩展) 我已经读过有关的文件。然而,它似乎是在等待选择器上触发特定事件-单击事件-而不仅仅是在添加与选择器匹配的元素时 现在未维护的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
$('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或更高版本?库工作正常,问题得到了回答。谢谢