Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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更改的livequery_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript 用于检测dom更改的livequery

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

如何使用JQuery的livequery检测DOM中的更改,如innerHTML更新等

我试着像下面一样

剧本-

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为
    容器的
    div
    时调用匹配函数,或者使用jQuery DOM操作方法之一将其添加到DOM中
  • 当使用jQuery DOM操作方法之一从DOM中删除(或更改)以前找到的id为容器的
    div
    时,调用unmatched函数
因此,对于您的示例,它只会发出一个警告,说在页面加载时检测到。由于innerHTML更改既不添加也不删除id为容器的div,livequery应该什么都不做,这就是它所做的


使用
*
(而不是
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');