使用datatable时,第一页行元素的点击事件好用,第二页点击事件不好用;为未来标签绑定事件

问题描述:使用datatable时,第一页行元素的点击事件好用,第二页的点击事件不好用,或者说页面加载后通过事件或ajax等新生成的标签对之前定义的该类标签的时间不好用,不能触发。

问题原因:bind 和click只能为页面已经加载好的元素绑定事件,不能为未来元素绑定事件,翻页之后,第二页的数据是动态生成的,相当于未来元素,所以时间没有绑定上。

解决方法:不用bind或click,使用未来元素绑定事件的方法。下面代码为各种为标签绑定事件的方法。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>未来元素的绑定事件练习</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <!-- <script src="js/jquery-1.10.2.js"></script> -->
    <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
    <script>
        $(function(){
            $("#newP").click(function(){
              $("#divId").append("<p>这是通过点击按钮新生成的p元素</p>")
            })
            $("p").click(function(){
                alert("通过click点击了p元素");//不会为未来标签绑定事件
            })
            //$(selector).delegate(childSelector,event,data,function),selector是未来标签的上级
            $("body").delegate('p', //会为符合条件的现有标签和未来标签都绑定事件
                 'click', function () {
                     alert("通过delegate点击了p元素");
             });
             $("p").on("click",function(){//不会为未来标签绑定事件
                 alert("通过on点击了p元素");
             })
             //$(selector).on(event,childSelector,data,function,map),selector是未来标签的上级
             $("body").on("click","p",function(){//会为符合条件的现有标签和未来标签都绑定事件(将未来标签写道on方法里)
                 alert("通过on(将未来标签写在on方法里的方式)点击p标签");
             })
             //$(selector).live(event,data,function)
             $("p").live("click",function(){//会为符合条件的现有标签和未来标签都绑定事件
                 alert("通过live点击了p标签");
             })

             //----------------重要----------------------
             //这几种绑定事件的方式和jquery的版本有关,某些版本可能已经不支持某个绑定事件的方法。
             //为未来标签绑定事件推荐用on的方式。
             
        })
       
    </script>
</head>
<body> 
    <p>这是一个p元素</p>
    <div id="divId"></div>
    <input type="button" value="新生成p元素的按钮" id="newP">
</body> 
</html>

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值