欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery中.live()方法的用法深入解析

 更新時間:2013年12月30日 09:24:23   作者:  
本篇文章主要是對jQuery中.live()方法的用法進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助

給jquery動態(tài)生成的頁面元素添加事件?使用livequery插件,或可以使用jquery的live方法。摘錄一段live簡單使用方法。

更多詳情還見官網(wǎng) http://api.jquery.com/live/

live(type, [data],fn)

概述

jQuery給所有匹配的元素附加一個事件處理函數(shù),即使這個元素是以后再添加進來的也有效。

這個方法是基本是的 .bind() 方法的一個變體。使用 .bind()時,選擇器匹配的元素會附加一個事件處理函數(shù),而以后再添加的元素則不會有。為此需要再使用一次 .bind() 才行。比如說

Click here
 
可以給這個元素綁定一個簡單的click事件:

$('.clickme').bind('click', function() {
 alert("Bound handler called.");     
}); 

當(dāng)點擊了元素,就會彈出一個警告框。

然后,想象一下這之后有另一個元素添加進來了。

$('body').append('
Another target
');

盡管這個新的元素也能夠匹配選擇器".clickme" ,但是由于這個元素是在調(diào)用 .bind() 之后添加的,所以點擊這個元素不會有任何效果。

.live()就提供了對應(yīng)這種情況的方法。如果我們是這樣綁定click事件的:

$('.clickme').live('click', function() {
 alert("Live handler called.");      
});

然后再添加一個新元素:

$('body').append('
Another target
');

然后再點擊新增的元素,他依然能夠觸發(fā)事件處理函數(shù)。 

事件委托

.live()方法能對一個還沒有添加進DOM的元素有效,是由于使用了事件委托:綁定在祖先元素上的事件處理函數(shù)可以對在后代上觸發(fā)的事件作出回應(yīng)。

傳遞給 .live()的事件處理函數(shù)不會綁定在元素上,而是把他作為一個特殊的事件處理函數(shù),綁定在 DOM樹的根節(jié)點上。在我們的例子中,當(dāng)點擊新的元素后,會依次發(fā)生下列步驟:

1、生成一個click事件傳遞給<div> 來處理

2、由于沒有事件處理函數(shù)直接綁定在 <div>上,所以事件冒泡到DOM樹上

3、事件不斷冒泡一直到DOM樹的根節(jié)點,默認情況下上面綁定了這個特殊的事件處理函數(shù)。

4、執(zhí)行由 .live() 綁定的特殊的click 事件處理函數(shù)。

5、這個事件處理函數(shù)首先檢測事件對象的target 來確定是不是需要繼續(xù)。這個測試是通過檢測 $(event.target).closest('.clickme')能否找到匹配的元素來實現(xiàn)的。

6、如果找到了匹配的元素,那么調(diào)用原始的事件處理函數(shù)。

由于只有在事件發(fā)生時才會在上面的第五步里做測試,因此在任何時候添加的元素都能夠響應(yīng)這個事件。


附加說明

.live()雖然很有用,但由于其特殊的實現(xiàn)方式,所以不能簡單的在任何情況下替換 .bind()。主要的不同有:

在jQuery 1.4中,.live()方法支持自定義事件,也支持所有的JavaScript 事件。在jQuery 1.4.1中,甚至也支持 focus 和 blue事件了(映射到更合適,并且可以冒泡的focusin和focusout上)。

另外,在jQuery1.4.1中,也能支持hover(映射到"mouseenter mouseleave")。然而在jQuery1.3.x中,只支持支持的JavaScript事件和自定義事件:click, dblclick, keydown, keypress,keyup, mousedown, mousemove, mouseout, mouseover, 和 mouseup.

.live()并不完全支持通過DOM遍歷的方法找到的元素。取而代之的是,應(yīng)當(dāng)總是在一個選擇器后面直接使用 .live()方法,正如前面例子里提到的。

當(dāng)一個事件處理函數(shù)用 .live()綁定后,要停止執(zhí)行其他的事件處理函數(shù),那么這個函數(shù)必須返回 false。 僅僅調(diào)用 .stopPropagation()無法實現(xiàn)這個目的。

參考 .bind() 方法可以獲得更多關(guān)于事件綁定的信息。

在jQuery 1.4.1中,你可以一次綁定多個事件給 .live() ,跟.bind() 提供的功能類似。

在jQuery 1.4中,data參數(shù)可以用于把附加信息傳遞給事件處理函數(shù)。一個很好的用處是應(yīng)付由閉包導(dǎo)致的問題??梢詤⒖?.bind()的討論來獲得更多信息。


參數(shù)

typeString     事件類型

data(可選)    Object          欲綁定的事件處理函數(shù)

fn                  Function        欲綁定的事件處理函數(shù)


示例

HTML 代碼:
 
Click me!

jQuery 代碼:
    $("p").live("click", function(){
         $(this).after("

Another paragraph!

");
    });

描述:

阻止默認事件行為和事件冒泡,返回false

jQuery 代碼:
$("a").live("click", function() { returnfalse; });

描述:

僅僅阻止默認事件行為

jQuery 代碼:
$("a").live("click", function(event){
    event.preventDefault();
 });

相關(guān)文章

  • 在線引用最新jquery文件的實現(xiàn)方法

    在線引用最新jquery文件的實現(xiàn)方法

    下面小編就為大家?guī)硪黄诰€引用最新jquery文件的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • jQuery.extend()、jQuery.fn.extend()擴展方法示例詳解

    jQuery.extend()、jQuery.fn.extend()擴展方法示例詳解

    這篇文章主要介紹了jQuery.extend()、jQuery.fn.extend()擴展方法的應(yīng)用,需要的朋友可以參考下
    2014-05-05
  • JavaScript?Canvas實現(xiàn)高清繪制效果

    JavaScript?Canvas實現(xiàn)高清繪制效果

    在我們?nèi)粘@L制canvas的時候都不可避免的遇到一個問題,那就是canvas繪制出來的東西可能會有模糊,所以本文為大家準備了解決canvas繪制模糊的方法,希望對大家有所幫助
    2023-06-06
  • 30個精美的jQuery幻燈片效果插件和教程

    30個精美的jQuery幻燈片效果插件和教程

    這篇文章與大家分享30個精美的的 jQuery 幻燈片效果插件和教程。您可能經(jīng)常能看到一些網(wǎng)站上特色區(qū)域的內(nèi)容以滾動方式變化
    2011-08-08
  • jQuery驗證插件 Validate詳解

    jQuery驗證插件 Validate詳解

    validate是一款很好的jq插件,提供了強大的驗證功能,讓客戶端表單驗證變得更簡單,同時提供了大量的定制選項,滿足應(yīng)用程序各種需求。該插件捆綁了一套有用的驗證方法,包括 URL 和電子郵件驗證,同時提供了一個用來編寫用戶自定義方法的 API。
    2014-11-11
  • jquery ajax方式直接提交整個表單核心代碼

    jquery ajax方式直接提交整個表單核心代碼

    提交表單的方法有很多,想必大家都知道一些吧,下面為大家講解下使用ajax的方式提交整個表單,具體實現(xiàn)如下,有此需求的朋友可以參考下,希望對大家有所幫助
    2013-08-08
  • jquery實現(xiàn)標(biāo)簽支持圖文排列帶上下箭頭按鈕的選項卡

    jquery實現(xiàn)標(biāo)簽支持圖文排列帶上下箭頭按鈕的選項卡

    這篇文章主要介紹了jquery實現(xiàn)標(biāo)簽支持圖文排列帶上下箭頭按鈕的選項卡的特效,效果十分不錯,而且非常實用,有需要的小伙伴參考下吧。
    2015-03-03
  • jQuery ajax中使用confirm,確認是否刪除的簡單實例

    jQuery ajax中使用confirm,確認是否刪除的簡單實例

    下面小編就為大家?guī)硪黄猨Query ajax 中使用confirm ,確認是否刪除的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 詳談jQuery.load()和Jsp的include的區(qū)別

    詳談jQuery.load()和Jsp的include的區(qū)別

    下面小編就為大家?guī)硪黄斦刯Query.load()和Jsp的include的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Jquery模仿Baidu、Google搜索時自動補充搜索結(jié)果提示

    Jquery模仿Baidu、Google搜索時自動補充搜索結(jié)果提示

    昨天研究了一下Jquery 模仿Baidu、Google收索時自動補充收索結(jié)果的提示,感覺效果還行,下面與大家分享下代碼
    2013-12-12

最新評論