jquery 动态加载的元素绑定事件

可以使用jquery的事件委托来实现。

假如有这么一段代码

<div>
    <p>111</p>
    <p>222</p>
    <p>333</p>
</div>

需要给p绑定点击,但是p是动态加入的,现在只有3个p,但以后会不断添加,会有4个,5个。。。n个。

为了实现给动态加入的p也绑定点击事件,可以这么写

$("div").on("click","p",function () {
     alert("msg");
});

这样不管添加多少个p,都是具有点击事件的。

在很长的一段时间内,我都不知道有这种写法,囧。以前碰到这种问题,都是生成一个dom,然后每次去clone这个dom并且绑定事件,最后插入到页面中。

对于事件委托我是知道的,当时看锋利的jquery里面有提,当时感觉这是一种代码优化,并没有解决啥新问题,导致我好几次错过了这种方法,可是写了不少冤枉代码啊,蛋疼的很。

现在来看这种解决方案,确实与事件委托密不可。子元素获得点击后会冒泡到父元素,此时需要判断实际触发事件的元素是否符合我们给的子元素选择器,如果满足则执行回调。这也意味着,我们父元素不可以选的太大,比如把父元素选成body,虽然可以实现,但每个事件触发时,都需要判断一下来源,那效率肯定就低了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值