当ajax加载更多的时候,动态生成的html里面的事件无法触发

       自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。该方法给 API 带来很多便利,我们推荐使用该方法,它简化了 jQuery 代码库——摘自菜鸟教程(http://www.runoob.com/jquery/event-on.html)

     在做项目的时候有时候遇到加载更多的时候,我们以前的做法是在动态加载的html里面采用onclick时间绑定方法,这样做比较繁琐,后期项目新手采用在加载更多之后重新再加载事件方法,而导致了原先存在html里面的那些事件每次都会触发2次。然后我google了一下,采用on方法可以避免该问题,思路就是将新生成的元素类的事件委托给一开始就存在的父容器进行处理。假设动态插入的div类名是.child,他们的父容器id是#parent.

  

$('#parent').on('click', '.child', function() {
    console.log('新旧插入的子元素的的点击事件都会冒泡到parent后进行处理,因此不需要插入后再重新绑定事件');
})
     然后本菜鸟 图画鸟,写了一下demo以下为html和json文件

 

<body>
  <div class="test">
    <div class="div1">
        <span>测试</span>
    </div>
  </div>
  <button class="more">加载更多</button>
  <script src="http://cdn.bootcss.com/jquery/1.12.1/jquery.js"></script>
  <script>
      $(function(){
        $(".test").on("click",'.div1',function(){
          alert("aaa");
        });
        $(".more").on("click",function(){
            var str = "";
            $.getJSON("test.json",function(data){   
                $.each(data,function(infoIndex,info){
                  str += "<div class='div1'><span>"+info.email+"</span></div>";
                });
                
               $(".test").append(str);
            });
        }); 
      });
  </script>
</body>

[  
{  
    "email":"zhangguoli@123.com"  
},  
{   
    "email":"zhangtieli@123.com"  
},  
{    
    "email":"zhenjie@123.com"  
}  
]  


测试可行~不知道什么情况,反正贴图没办法显示图片。~~~还搞不懂~~~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值