2012-07-20 13 views
10

削除AJAXロードされたコンテンツおよびスクリプト

次に、そのデータをページ内に存在するいくつかの要素に置き換えます。

今、私はロードされたdivからhtmlコンテンツを削除したので、2番目のajax呼び出しを行いたいと思います。次に、もう一度ajax呼び出しが他のHTMLコードとスクリプトを返します。しかし、それは以前のスクリプトと新しく到着したスクリプトとの間に葛藤があることがあります。

EX。 $('.ma_right_main').html(response.data);

その後、第二コールの前に、私がコンテンツを削除します:私はいくつかの要素をHTMLとスクリプトを置き換える 第一応答 $('.ma_right_main').html('');

第二応答私はいくつかの要素でhtmlとスクリプトを置き換える:$('.ma_right_main').html(response.data);

が、後に置き換えるを2回目のスクリプトは最初から実行中に戻ってきました。 HTMLコンテンツを削除する方法と同じように削除したいと思います。

+0

+1興味深い質問 –

答えて

3

ブラウザで削除可能なスクリプトがロードされたとは思わない(これはDOMから削除できないわけではありませんが、まだ存在します)。変数xのスクリプト、スクリプトがロードされるようにページをロードする、DOMからスクリプトを削除する、x私はまだ定義されていると思います。

動的に読み込まれる各スクリプトが独自のオブジェクトである場合は、オブジェクトをnullに設定できる「アンロード」時には、この方法があります。これは、同様のソリューションを探しているときに私がしばらく前に出会った解決策です。スクリプトは当然まったく実行されていませんhttps://stackoverflow.com/a/1346903/1475461

3

は、私が言及していたの参照を発見しました。 (.innerHTMLを設定すると、HTML内でスクリプトは実行されません)。

jQueryは、html内のすべてのスクリプト要素を手動で検索し、削除して評価します。したがって、.htmlを使用していてスクリプトを実行したくない場合は、htmlにスクリプトを含めないでください。

スクリプトを無効にすることはできません。そのため、ウェブサイトをリファクタリングする必要があります。以前のコードと衝突する可能性がある場合、新しいコードを応答に含めないでください。常時ロードされている汎用コードを使用してください。

+0

私が.innerHTMLを使用すると、HTMLコンテンツのみが置き換えられることになります。その後のスクリプトの効果はありません。 – Parixit

+1

@ user631652はい、 'element.innerHTML =" ";'スクリプトが実行されていないとします。 http://jsfiddle.net/TTH4R/を参照してください。 – Esailija

関連する問題