jQuery事件:bind、delegate、on

关系

.on()是jQuery事件的提供者。其他的事件绑定方法都是通过.on()来实现的, 相对应的是off , 其它事件的解绑事件都是通过 off()来实现的.

bind

.bind将会给所有匹配的元素都绑定一次事件,当元素很多时性能会变差。 而且后来动态新增的元素不会被绑定。

<div id='foo'></div>
<script>
$('#foo').bind('click',function(){
    console.log('clicked!');
});
</script>


$('#foo').unbind('click');  // 解绑指定事件 , 参数为空解绑所有

delegate

自动绑定动态添加的元素。因为事件处理函数绑定在#root上,新加的子元素事件也会冒泡到#root
性能好于.bind()。只绑定一个事件处理函数,绑定速度相当快。

<div id="root">
  <a>Alice</a>
  <a>Bob</a>
</div>
<script>
$('#root').delegate('a', 'click', function(){
    console.log('clicked');
});
</script>

事件冒泡和取消默认行为

$('a').click(function(event){
    // do sth.
    return false;
});

return false来阻止冒泡和默认行为, 可以认为return false做了三件事情:

  1. stopPropagation()
  2. preventDefault()
  3. 立即结束当前函数并返回。
// 事件处理函数的第一个参数是一个事件对象
$('#foo').click(function(event){
    event.stopPropagation();
    // do sth.
});

$('a').click(function(event){
    event.preventDefault();
    // do sth.
});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,131评论 19 139
  • 总结: 鼠标事件 1.click与dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r阅读 1,653评论 2 10
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,088评论 0 29
  • 我想拥抱你,所以哭哭笑笑拥抱了全班 我把桌上的东西全部摔倒地上, 我放大双眼瞪着玻璃中的我, 抱着杂乱的头发, 无...
    面汤同学阅读 209评论 0 2
  • 笔笺轻落 半点黄昏 道不尽 故人何来 绻书情意 离愁绪
    丌於阅读 259评论 0 0