2012-03-22 39 views
2

編輯:filter()顯然是錯誤的。將其更改爲find(),但問題仍然存在。在jQuery中插入DOM時不執行JavaScript

此代碼的工作對我來說:

$('#content') 
    .replaceWith($(
     '<div> 
     <div id="content"> Hello <script type="text/javascript"> alert(123); </script> 
     </div> 
     </div> 
     ')); 

但這並不:

$('#content') 
    .replaceWith($(
     '<div> 
     <div id="content"> Hello <script type="text/javascript"> alert(123); </script> 
     </div> 
     </div> 
     ').find('#content')); 

唯一的區別是,在第二個例子中,我要過濾的HTML的只是其中的一部分,然後將其插入到DOM中。

任何想法?謝謝。

EDIT3:增加了解決方案,答案

+0

你使用'document.ready'回調來執行這段代碼嗎? – Lix 2012-03-22 13:26:57

+0

嘗試單獨做它 – ZiTAL 2012-03-22 13:27:00

+0

你有任何錯誤或只是沒有插入? – 2012-03-22 13:33:42

回答

0

這個工作對我來說:

var newElements = $('<div><div id="content"><script>alert(123)</script></div></div>'); 
if (newElements.length > 1) { 
    for (var i = 1; i < newElements.length; i++) { 
    $('body').append(newElements[i]); 
    } 
} 
$('#content').html(newElements.find('#content').html()); 

的原因是,創造了第一個呼叫的要素,梳理了所有的腳本標記,並將它們放入一個數組。

console.log($('<div><div id="content"><script>alert(123)</script></div></div>')); 

結果:

[div, script] 

那麼顯然將.find()到陣列的腳本標籤丟失。