2015-10-07 35 views
0

我必須編輯現有的Web應用程序。我的問題是,我沒有從應用程序本身編輯腳本的權限。我剛剛得到了一個custom.js。jQuery - 元素加載後的火災事件

有關webapp的一些背景信息。它通過Ajax生成一些HTML元素(縮小的JS)。我的任務是隱藏其中一個元素。我的問題是,當我嘗試從我的custom.js中隱藏它時,它還沒有生成。所以我的問題是,是否是一個好方法,等待元素被加載?

我已經試過:

$(document).on("load", ".testLoad", function() { 
    console.log('Finally loaded'); 
}); 

不幸的是,這是不是爲我工作。

setTimeout(function(){ 
     $('.testLoad').hide(); 
    }, 5000); 

這是工作,但不是最乾淨的解決方案。

+1

你必須,因爲此類型元素提供相關的代碼生成這個DIV,沒有'負荷'事件(沒有意義) –

+0

@ A.Wolff正如我所說的,生成的DIV的代碼在JS中被縮小了。讓我們說,使用類似這樣的東西:'$('body')。prepend('

Testing Load
');' – Sylnois

回答

2

在你的情況下,或者你可以設置一個突變觀察者,或者您可以使用.ajaxComplete()方法:

$(document).ajaxComplete(function(event, xhr, settings) { 
    if (settings.url === "the/url/") { // you can check the url which is causing 
    console.log('Finally loaded');   // the new elements to be created. 
    } 
}); 
+1

Ya綁定一個全局ajax事件將是一個相當有趣的替代突變觀察者imho –

+0

感謝您的答案。我試過這個。不幸的是,我得到了很多網址,但大多數都有一個令牌。所以我想我沒有機會找出哪個網址是正確的。你有一個很好的鏈接,爲突變觀察員的教程? – Sylnois

+1

@Sylnois https://developer.mozilla.org/en/docs/Web/API/MutationObserver檢查此鏈接。 – Jai