2012-07-20 57 views
10

我不知道這可能是重複的,但刪除AJAX加載的內容和腳本

我用ajax在我的網站,現在在響應這一號召我發送一些HTML和腳本。

然後我用頁面中存在的一些元素替換該數據。

現在,我想做第二個ajax調用,所以我已經從加載的div中刪除html內容。然後再次ajax調用返回一些其他的html代碼和腳本。但有時它是前面的腳本和新到腳本之間的衝突。

EX。 第一次迴應,我與一些元素代替HTML和腳本:$('.ma_right_main').html(response.data);

然後第二個呼叫之前,我刪除的內容: $('.ma_right_main').html('');

第二反應我更換html和腳本的一些元素:$('.ma_right_main').html(response.data);

但更換後它第二次從第一次返回的腳本仍然在執行中。我想刪除它就像我可以刪除HTML內容。

+0

+1有趣的問題 – 2012-07-20 09:32:12

回答

3

我不認爲一旦瀏覽器已經加載了一個腳本,它可以被刪除(這並不意味着你不能從dom中刪除它,但它仍然存在。)例如,如果你有一個腳本與變量x,加載頁面,使腳本得到加載,從DOM刪除腳本,x我認爲仍然會被定義。

儘管如此,如果每個動態加載的腳本都是它自己的對象,當「卸載」時可以將對象設置爲null。這是我在尋找類似解決方案時遇到的一種解決方案。

發現我指的是參考:https://stackoverflow.com/a/1346903/1475461

3

腳本天然不獲執行。 (設置.innerHTML不會在HTML內執行腳本)。

jQuery手動查找html中的所有腳本元素,將其刪除並對其進行評估。因此,如果您使用.html並且不希望腳本執行,請不要在html中包含腳本。

而且你不能停用腳本,所以你需要重新考慮你的網站。如果與先前的代碼相沖突,請不要在回覆中包含新代碼。使用始終加載的通用代碼。

+0

你的意思是,如果我使用.innerHTML,那麼只有html內容將被替換。之後沒有腳本的影響。 – Parixit 2012-07-20 11:17:26

+1

@ user631652是的我的意思是,如果你做'element.innerHTML =「」;'腳本不執行。請參閱http://jsfiddle.net/TTH4R/ – Esailija 2012-07-20 11:18:28