zoukankan      html  css  js  c++  java
  • 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  
  • 相关阅读:
    js this
    python词云的制作方法
    flask表单标签
    scrapy使用PhantomJS爬取数据
    flask连接sqlalchemy数据库,实现简单的登录跳转功能
    useful tools and website
    sqlalchemy精华版
    flask连接数据库mysql+SQLAlchemy
    flask框架get post方式
    flask基础知识
  • 原文地址:https://www.cnblogs.com/nlyangtong/p/11213254.html
Copyright © 2011-2022 走看看