zoukankan      html  css  js  c++  java
  • jquery 动态创建的元素,绑定事件无效之解决方法

     今天遇到一个问题,动态创建的元素,绑定事件无效,如下:

    js 代码如下:

     1  var OaddX = $('.detright div.duibi div.duibox ul li span');  // 所有的X;
     2  var Ojiaru = $('.detright div.duibi div.duibox div.tiao li button'); // 添加新车对比按钮
     3  OaddX.on('click',function(){
     4            var OspanX =  $('.detright div.duibi div.duibox ul li span');
     5            if(OspanX.length<2){
     6                Oduicon.css('display','none');
     7            };
     8            $(this).parent().remove();
     9        });
    10  Ojiaru.on('click',function(){
    11             var OaddX1 = $('.detright div.duibi div.duibox ul li span'); 
    12             if(OaddX1.length>3){return false;}
    13             var Oul1 = $('.detright div.duibi div.duibox ul');
    14             var Ojianei = $('.detright div.duibi div.duibox div.tiao li.titles');
    15             var str = "<span class='dui_guan'>X</span>";
    16                 str += "<a href='javascript:;'>" + $.trim( Ojianei.html() ) + "</a>";
    17             var li1 = $('<li></li>');
    18             li1.append(str);
    19             Oul1.append(li1);
    20        });

    运行结果:

    要是用效果,就把 OaddX 的点击事件重新写,改成如下:

     1 var OaddX = $('.detright div.duibi div.duibox ul li span');  // 所有的X;
     2 var Ojiaru = $('.detright div.duibi div.duibox div.tiao li button'); // 添加新车对比按钮
     3 $("body").on('click','.detright div.duibi div.duibox ul li span',function(){
     4             var OspanX =  $('.detright div.duibi div.duibox ul li span');
     5            if(OspanX.length<2){
     6                Oduicon.css('display','none');
     7            };
     8            $(this).parent().remove();
     9         });
    10 Ojiaru.on('click',function(){
    11             var OaddX1 = $('.detright div.duibi div.duibox ul li span'); 
    12             if(OaddX1.length>3){return false;}
    13             var Oul1 = $('.detright div.duibi div.duibox ul');
    14             var Ojianei = $('.detright div.duibi div.duibox div.tiao li.titles');
    15             var str = "<span class='dui_guan'>X</span>";
    16                 str += "<a href='javascript:;'>" + $.trim( Ojianei.html() ) + "</a>";
    17             var li1 = $('<li></li>');
    18             li1.append(str);
    19             Oul1.append(li1);
    20        });

    代码 差异如下:

    运行结果:

    在 jquery中,如果需要进行动态添加元素,并且添加的元素要具有动态绑定事件的效果,那么可以把元素的绑定事件交给父元素或者body元素来实现

    规则如下:

    1. $('body').on('click','未来要添加的元素',function(){  .....  }) ;

    2. '父元素'.on('click','未来要添加的元素',function(){  .....  }) ;

    在jquery中,个人感觉比较方便,不用再去自己写js原生的 委托事件 来进行动态绑定

    http://www.cnblogs.com/huanying2015 博客随笔大多数文章均属原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    使用pymouse模块时候报错No module named 'windows'
    解决PIL透明的图片放在新图片上报错
    解决PIL切圆形图片存在锯齿
    常见金融术语-帮助更好的理解金融业务需求
    FastJson序列化时过滤字段(属性)的方法总结
    数据库事务4种隔离级别及7种传播行为
    硬件网络接口规范
    「题解」P5906 【模板】回滚莫队&不删除莫队
    「学习笔记」优美的暴力——莫队
    2017 NOIp提高组 DAY2 试做
  • 原文地址:https://www.cnblogs.com/huanying2015/p/7988783.html
Copyright © 2011-2022 走看看