Javascript 用于检测dom更改的livequery
如何使用JQuery的livequery检测DOM中的更改,如innerHTML更新等 我试着像下面一样 剧本-Javascript 用于检测dom更改的livequery,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,如何使用JQuery的livequery检测DOM中的更改,如innerHTML更新等 我试着像下面一样 剧本- var matched = function() { alert('detected'); }; var unmatched = function() { alert('removed') }; $('div#container').livequery(matched, unmatched) HTML- <BODY onload="setTimeou
var matched = function() {
alert('detected');
};
var unmatched = function() {
alert('removed')
};
$('div#container').livequery(matched, unmatched)
HTML-
<BODY onload="setTimeout(function(){
document.getElementById('container').innerHTML = 'updated test'; },3000);">
<div id="container">test</div>
</BODY>
测试
但这不起作用
谢谢,
Sourabh您试图做的事情并不是livequery插件的设计目的
$('div#container').livequery(matched, unmatched);
这将告诉livequery:
- 当找到id为
容器的
时调用匹配函数,或者使用jQuery DOM操作方法之一将其添加到DOM中div
- 当使用jQuery DOM操作方法之一从DOM中删除(或更改)以前找到的id为容器的
时,调用unmatched函数div
使用
*
(而不是div#container
)只会在页面加载时触发几个警报,但只要使用非jQuery DOM操作方法,就不会再次触发
document.getElementById('container').innerHTML = 'updated test';
不触发matched()
,因为不使用jQuery进行操作#2您没有添加与*
匹配的新元素
document.getElementById('container').innerHTML = '<p>updated test</p>'
它将在3s后触发matched()
。如果你愿意的话
$("#container").html('updated test');
matched()
不会被激发,因为没有添加任何将由*
选择器匹配的内容,只有已匹配元素的innerHTML被更改是否存在脚本错误?您是否包含了所有js文件。在我看来,您好像告诉livequery
在DOM中添加或删除带有id=“container”
的元素时调用您的函数。我认为当该元素的innerHTML
发生更改时,您不应该调用它。事实上,我期待3秒钟后会出现警报(science innerHTML已更新),但不会收到警报。尽管我在页面加载时收到警报。好的,现在我尝试使用*而不是div#container作为选择器,但是对于innerHTML更新,它不会被触发。因此,对于添加的元素,如div、span、option等,问题得到了解决。但是如何处理innerHTML或option值等?请检查我的答案。并重新阅读livequery插件文档
$("#container").html('updated test');