事件绑定

本文探讨了JavaScript中事件冒泡原理及事件委托的应用。通过一个图片网格示例,对比了直接绑定事件与利用事件委托方式的不同。指出后者能显著减少内存占用并提高效率。
在JavaScript中,事件是个复杂的问题。事件冒泡(event bubbling)和委托正在取代内联事件(inline onclick)操作(一些特殊的“初始页”除外)。

假设你有一个图片网格,需要启动一个modal lightbox窗口。千万不要采取下面的做法,示例采用的是jQuery,如果你使用相似的库或者其他,冒泡机制也同样适合传统的JavaScript。

相关的HTML代码:

<div id="grid-container">
    <a href="someimage.jpg"><img src="someimage-thumb.jpg"></a>
    <a href="someimage.jpg"><img src="someimage-thumb.jpg"></a>
    <a href="someimage.jpg"><img src="someimage-thumb.jpg"></a>
    ...
</div>

bad code:

$('a').on('click', function(){
    callLightbox(this);
});
这段代码假设调用lightbox,里面传递一个anchor元素并且引用全屏图片。与其绑定每个anchor元素还不如直接使用#grid-container元素。


nice code:

$("#grid-container").on("click", "a", function(event){
    callLightbox(event.target);
});
在这段代码中,this和event.target都表示anchor元素。同样你也可以在任何父元素上使用。只要保证所定义的元素是事件目标就行(event's target)。


转载于:https://my.oschina.net/keywindy/blog/90698

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值