jquery监听div等元素的内容变化

方法一:change事件

change事件,在元素的值发生改变时触发,适用于文本域、textarea、select 。 或调用change()方法时能够监听。因此,咱们能够模拟change为非表单元素监听change()事件。html

 1  
 2 <!Doctype>
 3  
 4 <html>
 5  
 6 <head>
 7  
 8 <meta charset="utf-8">
 9  
10 <title>change事件</title>
11  
12 <style>
13  
14 #container { 15  
16 min-height: 120px; 17  
18 border: 1px solid #aaa; 19  
20 } 21  
22 </style>
23  
24 </head>
25  
26 <body>
27  
28 <div id="container">
29  
30  
31  
32 </div>
33  
34 <button type="button" id="btn">add "aaa" for div</button>
35  
36  
37  
38  
39  
40 <script src="jquery-1.11.3.js"></script>
41  
42 <script>
43  
44  
45  
46 function changes(){ 47  
48 alert("changes"); 49  
50 } 51  
52  
53  
54 $("#btn").click(function() { 55  
56 $("#container").append("aaa").change(); 57  
58 }); 59  
60 $("#container").bind("change", changes); 61  
62 </script>
63  
64 </body>
65  
66 </html>

以上demo中,点击按钮,为div中动态添加内容,添加内容后,手动调用change()方法,为div模拟出change事件。jquery

 

注: 1.以上demo中是追加的内容,因此没有判断div的内容是否发生变化,若是在其余场景下,能够本身判断div内容是否发生了变化浏览器

        2 .只要兼容jquery的浏览器均可以兼容此方法。app

 

方法二:DOMNodeInserted事件

经测试,这个DOMNodeInserted事件能够监听到非表单元素的内容的变化,只有在插入节点时有效,相反DOMNodeRemoved事件,只有在移除节点时有效。DOMNodeInserted事件是js提供的一个dom2级事件(具体什么意思,我尚未弄懂,弄懂后回来补充,此处省略1000字。。。),总之,是能够监听到的。dom

 1  
 2 <!Doctype>
 3  
 4 <html>
 5  
 6 <head>
 7  
 8 <meta charset="utf-8">
 9  
10 <title>change事件</title>
11  
12 <style>
13  
14 #container { 15  
16 min-height: 120px; 17  
18 border: 1px solid #aaa; 19  
20 } 21  
22 </style>
23  
24 </head>
25  
26 <body>
27  
28 <div id="container">
29  
30  
31  
32 </div>
33  
34 <button type="button" id="btn">add "aaa" for div</button>
35  
36  
37  
38  
39  
40 <script src="jquery-1.11.3.js"></script>
41  
42 <script>
43  
44  
45  
46 function changes(){ 47  
48 alert("changes"); 49  
50 } 51  
52  
53  
54 $("#btn").click(function() { 55  
56 $("#container").append("aaa"); 57  
58 }); 59  
60 $("#container").bind("DOMNodeInserted", changes); 61  
62 </script>
63  
64 </body>
65  
66 </html>

注: 此方法存在ie8及如下浏览器中失效测试

 

方法三:定时任务

能够经过定时任务来监听非表单元素的内容变化,若是以上两种方法均不适用的状况下,能够尝试此种方法spa

 

 1  
 2 <!Doctype>
 3  
 4 <html>
 5  
 6 <head>
 7  
 8 <meta charset="utf-8">
 9  
10 <title>change事件</title>
11  
12 <style>
13  
14 #container { 15  
16 min-height: 120px; 17  
18 border: 1px solid #aaa; 19  
20 } 21  
22 </style>
23  
24 </head>
25  
26 <body>
27  
28 <div id="container">
29  
30  
31  
32 </div>
33  
34 <button type="button" id="btn">add "aaa" for div</button>
35  
36  
37  
38  
39  
40 <script src="jquery-1.11.3.js"></script>
41  
42 <script>
43  
44  
45  
46 function changes(){ 47  
48 alert("changes"); 49  
50 } 51  
52  
53  
54 $("#btn").click(function() { 55  
56 $("#container").append("aaa"); 57  
58 }); 59  
60  
61  
62 var div = $("#container").html(); 63  
64 setInterval(function() { 65  
66 var divNew = $("#container").html(); 67  
68 if(div != divNew) { 69  
70 changes(); 71  
72 div = divNew; 73  
74 } 75  
76 }, 100); 77  
78 </script>
79  
80 </body>
81  
82 </html>
83
相关文章
相关标签/搜索