![](/img/trans.png)
[英]jQuery without adding additional plugins: trigger event when an element with a specific class is added to the DOM
[英]Triggering event when element added to DOM: JQuery Livequery Equivalent in 1.7
我希望在頁面上顯示特定元素時觸發事件(我不控制源頁面 - 這是Chrome擴展程序)
我已經閱讀了有關JQuery 1.7的on()方法的文檔。 然而,它似乎是關於等待在選擇器上觸發特定事件 - 單擊事件 - 而不僅僅是在添加與選擇器匹配的元素時。
相當於現在未維護的livequery插件:
$('a').livequery(function () {
console.log('yaay a link was added');
})
如果這是專為Chrome 18+設計的Chrome擴展程序,那么您可以使用DOM4規范中稱為Mutation Observers的功能 。 這會分配一個在更改DOM時觸發的回調,然后您可以使用它來執行您想要的任何操作。 它仍然很新,但這里有更多的信息
該頁面的代碼示例:
var insertedNodes = [];
var observer = new WebKitMutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
for (var i = 0; i < mutation.addedNodes.length; i++)
insertedNodes.push(mutation.addedNodes[i]);
})
});
observer.observe(document, { childList: true });
console.log(insertedNodes);
.livequery()
工作原理 .livequery()
有兩個用途:
在第一種情況下,您完全可以使用當前使用的.on()
或已棄用的.live()
.delegate()
替換它(如果您的jQuery版本早於1.7)。
在第二種情況下,它看起來像.livequery()
會覆蓋標准的DOM修改JS方法,或者將它們“掛鈎”到它們中。 要模仿這種行為,您需要做類似的事情,或者只是重新設計腳本以避免這種障礙。
如果您選擇使用自己的實現,只需確保您沒有犯.live()
開發人員犯的錯誤:將選擇器從jQuery參數移動到模塊的函數參數中: jQuery(selector).live(...)
- > jQuery(...).on(..., selector, ...)
,因為在准備腳本時不需要執行(只有在更改時才會執行)。
你運氣不好,因為沒有廣泛采用的事件負責監聽插入DOM的新DOM元素。 您可以使用的可能事件列表如下:
https://developer.mozilla.org/en/DOM_Client_Object_Cross-Reference/DOM_Events
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.