2011-12-09 14 views
6

jquery loadを使用して別のページのdivを取得し、それをページに挿入します。このような 気にいら:他のページ上のdivにjquery load with inline javascript

​​

は、Javascriptをdiv要素でもあります。 javascriptは、HTMLコンテンツだけに渡って来ていません。指定されたdiv内のすべてを取得する方法はありますか?

+0

あなたがロードされDIVのJavascriptををご提供することができますか?コードは初期ですか? – Theodore

答えて

0

JavaScriptまた、応答に沿って来る必要があります。 /Pages/grid2.aspxがサーバー側から必要な応答を送信する必要があることを確認する必要があります。また、loadメソッドに渡したURLには空白があります。私はそれを訂正して試してみるべきだと思います。 documentationから

$('#mydiv').load("/Pages/grid2.aspx" + "#otherpagediv"); 
+0

これは実際には 'load'関数の設計によるものです。スペースは、ページの一部を読み込むために使用されます。 –

+0

@アレクサンダー - 私はこれを知っていませんでした、ありがとうございました。 – ShankarSangoli

2

注:サフィックスセレクタ 発現せずにURLを使用して)(.LOAD呼び出すとき、コンテンツを前に除去 であるスクリプトに().htmlのに渡されます。これにより、スクリプトブロックは破棄される前に実行されます。

.LOAD場合は、()がスクリプトが前にそれらが実行されることはありません理由で更新されているDOM、 に取り除かれ、 URLに付加セレクタ式と呼ばれています。

6

これは動作します:

$.get('/Pages/grid2.aspx', function (data) { 
    $('#mydiv').html($('<div></div>').html(data).find('#otherpagediv').clone()); 
}); 

ライブデモ:http://jsfiddle.net/FRbnD/4/show/light/

は、デモを理解し、それを構成する両方のページのソースコードを表示するには:デモの
ソースコードを: http://jsfiddle.net/FRbnD/4/
「その他のページ」のソースコード:http://jsfiddle.net/MWkSj/1/

$.getリクエストを介して他のページを取得し、次に#otherpagedivを見つけてそれを複製するのは、です。クローンを#mydivに追加します。クローンをDOMに挿入し、そのクローンにSCRIPT要素が含まれている場合、そのスクリプトが実行されます。このページは役に立ち見つけるかもしれない

+0

これは間違いなくjQuery APIページに追加する必要があります! –

0

http://www.coursesweb.net/ajax/execute-javascript-code-ajax-response_t

、私はスクリプトを使用している、それは(evalのを使用しています)

// this function create an Array that contains the JS code of every <script> 
// then apply the eval() to execute the code in every script collected 
function parseScript(strcode) { 
var scripts = new Array();   // Array which will store the script's code 

// Strip out tags 
while(strcode.indexOf("<script") > -1 || strcode.indexOf("</script") > -1) { 
var s = strcode.indexOf("<script"); 
var s_e = strcode.indexOf(">", s); 
var e = strcode.indexOf("</script", s); 
var e_e = strcode.indexOf(">", e); 

// Add to scripts array 
scripts.push(strcode.substring(s_e+1, e)); 
// Strip from strcode 
strcode = strcode.substring(0, s) + strcode.substring(e_e+1); 
} 

// Loop through every script collected and eval it 
for(var i=0; i<scripts.length; i++) { 
try { 
    eval(scripts[i]); 
} 
    catch(ex) { 
    // do what you want here when a script fails 
    } 
} 
}