jquery中的bind()、live()的區別與使用(事件處理)
阿新 • • 發佈:2018-06-25
綁定 HA 我們 doc dso 目標 code span ive 原文:jquery中的bind()、live()的區別與使用(事件處理)
使用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);
})
jquery中的bind()、live()的區別與使用(事件處理)