有沒有什麼辦法可以使用jQuery來委託一個事件,它將對應於頁面上與選擇器匹配的所有元素,而不是從$(document)
中委託?1.7.2中的jQuery事件委託
因爲這可能是措辭不當,這裏的難題是:
曾經有jQuery.live
下放事件,以匹配選擇的所有元素。這被替換爲jQuery.delegate
,它將特定上下文選擇器中的事件委託給它的子項,而後者又被jQuery.on
取代,後者實際上做了同樣的事情,但在幕後有不同的位(我想象中)。
我想要做的就是安全地爲我的頁面上的每個div.foo
添加一個事件處理程序,而不管它可能存在的位置或存在的時間。根據文檔和實證研究,以下內容僅與腳本運行時存在的.foo
元素綁定。由於有代碼可能會在頁面上放置一個.foo
元素,所以這不正確。
jQuery('.foo').on('click', handler);
由於live
被棄用(可能已經刪除的?),我試圖不使用,但唯一的解決辦法,我能想出是
jQuery(document).on('click', '.foo', handler);
但是這是否有什麼live
原來,在幕後?更重要的是,有沒有什麼重要的原因不是要做到這一點?
我們特別使用1.7.2版,但通用的jQuery答案也會有所幫助。
這是'live'最初做的,但它也正是你要找的。理想情況下,你會使用'document'以外的其他東西,但是如果你不能縮小它,那麼'document'是你唯一的選擇。 –
@詹姆斯蒙塔涅耶我懷疑這一點。我只是不知道是否有理由不把它委託給文檔,除了可能阻止'stopPropagation'。 –
也表現。它必須一直冒泡,頁面上的每次點擊都會被捕獲並檢查,看看它是否是正確的選擇器。 –