关系
.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
做了三件事情:
-
stopPropagation()
; -
preventDefault()
; - 立即结束当前函数并返回。
// 事件处理函数的第一个参数是一个事件对象
$('#foo').click(function(event){
event.stopPropagation();
// do sth.
});
$('a').click(function(event){
event.preventDefault();
// do sth.
});