jquery監聽div等元素的內容變化


方法一:change事件

change事件,在元素的值發生改變時觸發,適用於文本域、textarea、select 。 或調用change()方法時可以監聽。所以,我們可以模擬change為非表單元素監聽change()事件。

 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事件。

 

注: 1.以上demo中是追加的內容,所以沒有判斷div的內容是否發生變化,如果在其他場景下,可以自己判斷div內容是否發生了變化

        2 .只要兼容jquery的瀏覽器都可以兼容此方法。

 

方法二:DOMNodeInserted事件

經測試,這個DOMNodeInserted事件可以監聽到非表單元素的內容的變化,只有在插入節點時有效,相反DOMNodeRemoved事件,只有在移除節點時有效。DOMNodeInserted事件是js提供的一個dom2級事件(具體什么意思,我還沒有弄懂,弄懂后回來補充,此處省略1000字。。。),總之,是可以監聽到的。

 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及以下瀏覽器中失效

 

方法三:定時任務

可以通過定時任務來監聽非表單元素的內容變化,如果以上兩種方法均不適用的情況下,可以嘗試此種方法

 

 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  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM