jQuery绑定事件,dom刷新后绑定事件失效

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            // 1绑定事件
            $(".btn").click(function (event) {
                 console.log("aaa");
            });

            // 2替换dom元素后,再次点击,就没有事件了。
            $("input").click(function () {
                $("#parent").html($("#hide")[0].innerHTML);
            });          
        });

    </script>
</head>
<body>
   <div id="parent">
       <button class='btn'>按钮</a>
   </div>

    <div style="display:none" id="hide">
        <button class='btn'>按钮</a>
    </div>

    <input type="button"  value="replace"/> 
</body>
</html>

1.页面加载完成,div初次加载就有button节点,此时是没有问题的。
2.使用局部刷新改变div的内容后,初次加载的时候事件已经绑定过了节点对象,使用局部刷新后,虽然节点名称参数都是一模一样的,但是已经不是同一个DOM对象了,所以刷新后绑定的事件会失效。

解决方法:

 //用on委托代理的方式绑定。只要父元素是一开始就存在的,将事件委托给这个父元素。
 //委托的原理:一开始给btn绑定的事件会冒泡到父元素。父元素也绑定了click事件,此后就会触发父元素的点击事件。
  $("#parent").on('click','.btn',function(){
   	console.log("bbb");
  })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值