使用jquery有一段时间了,刚开始看别人的源代码的时候对事件的绑定方法有疑惑。比如:
var btn=$("#button"); btn.click(function(){ alert("I have been clicked!"); });
这就绑定了一个click事件。
1.bind()方法解析
但后来发现jqueryAPI里面还有bind方法,一直没有使用过,查看API的使用方法:
$("p").bind("click", function(){ alert( $(this).text() ); });
同时绑定多个事件类型
$(‘#foo‘).bind(‘mouseenter mouseleave‘, function() { $(this).toggleClass(‘entered‘); });
注意:事件类型名称用空格隔开,使用场景:多个事件类型做同一个动作时使用。
相对于直接注册事件,bind()方法可以绑定多个事件,相同之处是都是绑定在目标对象上面,这个方法是存在最久的,而且也很好的解决了浏览器在事件处理中的兼容问题
注意如果父层有绑定事件的情况下,需要阻止一下冒泡,e.stopPropagation()和e.cancellBubble().
2.live()方法解析
使用情况如下:
$(‘#foo‘).live(‘click‘, function() { $(this).toggleClass(‘entered‘); });//.live()方法用到了事件委托的概念来处理事件的绑定。
live()方法用到了事件委托的概念来处理事件的绑定。它和用.bind()来绑定事件是一样的。区别之处在于:
live()总是找到事件对象(event.target)的顶级元素(document),并在document节点上进行事件绑定,通过事件冒泡的机制进行事件委派,使用时只需要定义一次,可以满足所有符合要求的事件对象,使用环境是多个对象做同一个类型的事情的时候,比如要让所有的元素弹出自己的ID 代码如下:
<div id="parent"> <div id="son"> <div id="grandson"> fffffffff </div> </div> </div>
我们现在要让三个div都要弹出自己的ID
JS代码如下:
$("#parent").live("click",function(){ alert($(this).id); })
时间: 2024-10-11 04:30:24