最新文章專題視頻專題關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
使用ps怎么做立體字 冰箱里面有霜怎么處理 cad的比例怎么調 有什么辦法讓鞋子速干 筆記本電腦上的本地連接不見了 電腦ps怎么做立體字 用cad畫圖怎么調比例 怎么避免洗頭水進眼睛 word2007怎么去掉背景色 ps的立體字怎么做 cad中圖紙比例怎么調 健康碼怎么注銷 oppoa5手機怎么滾動截屏 ps里面立體字怎么做 cad圖怎么調比例 圖片在word中怎么隨便旋轉 keep會員怎么取消自動續費 2007cad怎么調比例 ps中立體字怎么做 win10怎樣取消粘滯鍵 如何查找到網絡共享打印機驅動 cad線怎么調比例 ps里面怎么做立體字 ibm筆記本能加內存條嗎 ipad的微信沒有聲音是怎么回事 cad圖紙怎么調比例 3d畫怎么畫 ps里立體字怎么做 怎么改變ps里新建圖層顏色 PS怎么做立體藝術字 2010cad怎么調比例 手機淘寶紅包省錢卡怎么取消自動續費 蘋果怎么開啟通話錄音 cad線的比例大小怎么調 ps中怎么做立體字 水淀粉到底該怎么調 怎么旋轉word中的圖片 cad畫的時候怎么調比例 蘋果手機怎么攔截騷擾電話和信息 ps里怎么做立體字
當前位置: 首頁 - 科技 - 知識百科 - 正文

jquerylive()重復綁定的解決方法介紹_jquery

來源:懂視網 責編:小采 時間:2020-11-27 21:18:18
文檔

jquerylive()重復綁定的解決方法介紹_jquery

jquerylive()重復綁定的解決方法介紹_jquery:Query中.live()方法的使用方法 今天在寫代碼的時候遇到一個問題,直接上代碼看:$(function(){ $(.file).live(click,function(){ var task_name=$(this).text(); $(#selecting tbody).append(+task_na
推薦度:
導讀jquerylive()重復綁定的解決方法介紹_jquery:Query中.live()方法的使用方法 今天在寫代碼的時候遇到一個問題,直接上代碼看:$(function(){ $(.file).live(click,function(){ var task_name=$(this).text(); $(#selecting tbody).append(+task_na

Query中.live()方法的使用方法

今天在寫代碼的時候遇到一個問題,直接上代碼看:
$(function(){
$(".file").live("click",function(){
var task_name=$(this).text();
$("#selecting tbody").append(""+task_name+"");
});
});

$(".file")對象是從后臺傳過來的,click肯定是不行的,bind()也無法獲取動態添加的元素,因此只能用live(),但是使用live()遇到的問題是表格行會莫名其妙的添加了兩行,即綁定事件重復執行了,糾結了一上午終于找到了原因,先看live()方法的介紹。

live(type, [data],fn)


概述

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

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


Clickhere

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

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

當點擊了元素,就會彈出一個警告框。

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

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

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

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

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

然后再添加一個新元素:

$('body').append('Anothertarget');

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

事件委托

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

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

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

2、由于沒有事件處理函數直接綁定在 上,所以事件冒泡到DOM樹上

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

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

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

6、如果找到了匹配的元素,那么調用原始的事件處理函數。

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


附加說明

.live()雖然很有用,但由于其特殊的實現方式,所以不能簡單的在任何情況下替換 .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遍歷的方法找到的元素。取而代之的是,應當總是在一個選擇器后面直接使用 .live()方法,正如前面例子里提到的。

當一個事件處理函數用 .live()綁定后,要停止執行其他的事件處理函數,那么這個函數必須返回 false。 僅僅調用 .stopPropagation()無法實現這個目的。


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

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

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


參數

typeString 事件類型

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

fn Function 欲綁定的事件處理函數


示例

HTML 代碼:

Clickme!

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

Anotherparagraph!

");
});

描述:

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

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

//根本原因在這,需要阻止默認事件行為和事件冒泡,在代碼后面添加return false;就OK了

描述:

僅僅阻止默認事件行為

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com

文檔

jquerylive()重復綁定的解決方法介紹_jquery

jquerylive()重復綁定的解決方法介紹_jquery:Query中.live()方法的使用方法 今天在寫代碼的時候遇到一個問題,直接上代碼看:$(function(){ $(.file).live(click,function(){ var task_name=$(this).text(); $(#selecting tbody).append(+task_na
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
国产精品久久久久精品…-国产精品可乐视频最新-亚洲欧美重口味在线-欧美va免费在线观看