• 随笔一个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选择器,这样就解决了~

  • 相关阅读:
    【面试必备】CSS盒模型的点点滴滴
    2013年终总结——求评点求指导
    【面试必备】javascript的原型和继承
    支持断点续传的文件上传插件——Huploadify-V2.0来了
    【面试必备】javascript操作DOM元素
    走进AngularJs(八) ng的路由机制
    走进AngularJs(七) 过滤器(filter)
    走进AngularJs(六) 服务
    HTML5+flash打造兼容各浏览器的文件上传方案
    免费的HTML5版uploadify送上
  • 原文地址:https://www.cnblogs.com/firstForEver/p/5267264.html
Copyright © 2020-2023  润新知