• 随笔一个dom节点绑定事件


      以下利用jquery说明:

        js中,给一个dom节点绑定事件再平常不过了。这里说下,如果dom经常发生变化的话,给这个dom绑定事件的情况。

    比如代码如下:

    li的节点,绑定了事件:点击会打出来里头的html内容。

    button点击事件:会生成一个li节点。

     1 <html>
     2 <head>
     3     <meta charset="UTF-8">
     4 </head>
     5 <body>
     6 <ul class="ul">
     7     <li class="li">abc</li>
     8     <li class="li">abc</li>
     9     <li class="li">abc</li>
    10 </ul>
    11 
    12 <hr/>
    13 <button id="btn">add</button>
    14 </body>
    15 <script type="text/javascript" src="jquery.js"></script>
    16 <script type="text/javascript">
    17     $(function(){
    18 
    19         $('.li').click(function(){
    20             console.log(this.innerHTML);
    21         });
    22 
    23         $('#btn').on('click', function(){
    24             $('.ul').append('<li class="li">XXX</li>');
    25         });
    26 
    27     });
    28 
    29 </script>
    30 </html>

    如果这么写的话,点击以后生成的li节点,点击是不会打出log的~

    因为代码执行来看,未点击add时,我们给每一个li绑定了click事件,这仅限于当前dom树下的li。$('.li')仅是获取当前dom下的所有class为li的节点。

    当点击button后,再生成的节点,是绑定不上的。

    咋办咧?此时,我们会利用事件的冒泡或者捕获的机制,对li的父节点ul打主意~如果给ul绑定一个click事件,那么即便是点击新生成的它的子节点,不也有了事件么?哈哈~就是这样

    代码如下:

    $('.ul').on('click', '.li', function(){
         console.log(this.innerHTML);
    });

    我们给.ul绑定了事件,在其中选择.li选择器,这样就解决了~

  • 相关阅读:
    JavaScript创建块级作用域
    JavaScript数组求最大值 面试题
    JavaScript类数组转换为数组 面试题
    JavaScript实现深拷贝(深复制) 面试题
    javascript洗牌算法 乱序算法 面试题
    3GPP 测试 /etc/udev/ruse.d/50文件 /lib/udev/ruse.d/55* 网络配置
    【网络】TCP/IP连接三次握手
    SVN 使用方法
    Git 使用方法
    LoadRunner性能测试工具
  • 原文地址:https://www.cnblogs.com/firstForEver/p/5267264.html
Copyright © 2020-2023  润新知