簡體   English   中英

JQuery'on'與'live'

[英]JQuery 'on' vs. 'live'

我有一個場景,JQuery'on'和'live'不會執行相同的操作。 也許有人可以指出原因。 我在我的項目中使用JQuery 1.7.2,在這個版本中,'live'已被'on'取代。 我在列表頁面中使用以下代碼。 基本上,此頁面有一個字母欄,用戶可以單擊該欄並將加載具有該姓氏的所有客戶端。 我想通過ajax執行鏈接。

碼:

$("a.listajax").on("click", function (e) {
    e.preventDefault();
    var url = $(this).attr("href");
    $("div.content").load(url + " div.content");
    return false;
});

這里的問題是,當我第一次加載頁面並單擊鏈接時,一切正常。 頁面通過ajax加載。 但是,之后所有的鏈接都失去了綁定,然后如果我點擊任何鏈接,我會加載整個頁面。

我將'on'替換為'live',並且鏈接開始表現完美,即使在后續點擊中也是如此。

我錯過了什么?

一個不是簡單地用.on替換.live

$("a.listajax").live('click', function(e))

相當於:

$(document).on('click', 'a.listajax', function(e))

重要

如果你的所有.listajax錨都有一個共同的祖先,那么你不應該從DOM中刪除它,你應該使用它(最深的一個)而不是document ; 這將提高性能。

這就是live() 它在創建時重新綁定新的DOM元素。 在jQuery的網站上有很多類似的問題,比如這個 ,因為它可能有點令人困惑。

根據jQuery文檔 ,您使用live()來:

為現在和將來與當前選擇器匹配的所有元素附加事件處理程序。

“...在將來”部分是關鍵,因為on() 沒有那個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM