![](/img/trans.png)
[英]Binding an event on a DOM element to be executed BEFORE an Ajax .load
[英]Add event on element load before it is in the DOM
我想在加載DOM元素時添加一個事件,但是該元素可能尚未在DOM中。
我可以想到兩種解決方案:
(i)將其附加到document.onload()
。 如果發生,可能需要一段時間才能實現,因此不理想
(ii)使用以下命令檢查DOM元素的存在
window.setInterval(function() {
if (document.getElementById("id")) /* do stuff */
}, 100);
這些都不是很優雅。 有更好的解決方案嗎?
編輯:我忘了提,我不想使用jQuery,並且想要在不觸摸所有頁面的<body>
的情況下將我的腳本放在<head>
EDIT2:我這樣做的原因是要跟蹤某些元素的正確加載,並監視它們需要花費多長時間以及是否正確加載。
您可以嘗試事件委派 ..
將click事件附加到文檔,然后檢查要在其上運行功能的元素。
document.onclick = function (event) {
//IE doesn't pass in the event object
event = event || window.event;
//IE uses srcElement as the target
var target = event.target || event.srcElement;
var id = target.id;
if( id === 'id'){
clickEvent(id);
}
};
function clickEvent(id){
console.log("Elemennt with ID : " + id + "has been clicked !!")
};
經過研究,我認為沒有更好的通用方法。 兩者都有一點改進:將檢查放在document.onload()
並按固定的時間間隔進行(保留變量以確保我不會重復兩次)。
此頁面確認就正確加載DOM而言,兩者都是安全的。
MutationObserver是由現代瀏覽器提供的Web API,用於檢測DOM中的更改。 使用此API,可以偵聽新添加或刪除的節點,屬性更改或文本節點的文本內容更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.