2012-03-22 5 views
2

EDIT: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')); 

唯一の違いは、2番目の例では、私はHTMLの一部のみをフィルタリングすることで、それをDOMに挿入します。

アイデア?ありがとう。

EDIT3:答え

+0

あなたは 'document.ready'コールバックを使ってこのコードを実行していますか? – Lix

+0

それを別々に試してください – ZiTAL

+0

あなたには間違いがありますか?それとも挿入されていませんか? –

答えて

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適用します。

関連する問題