1

jQueryの.loadmethdodを使用してページの内容を変更してみました。

コンテンツは問題なく変更されましたが、何かを選択しようとすると、jQueryはまだ古いコンテンツを「認識」していることがわかりました。例:

ページ:

 <div id="mycontentarea">
   <div id="myfirstcontent"></div>
   <div id="mysecondcontent"></div>
</div>

コンテンツの置き換え:

<div id=mythirdcontent"></div>
<div id=myfourthcontent"></div>

javascript:

// replace original content
$('#mycontentarea').load('replacement.html');
// print out the id of the first child
console.log($("#mycontentarea").children().attr("id"));

コンソールは「mythirdcontent」ではなく「myfirstcontent」を出力します-なぜですか?

4

1 に答える 1

6

loadは非同期でありconsole.log、置換が行われる前に呼び出しが実行されるためです。

呼び出しの結果に依存するコードを、load正常に完了したときに実行されるコールバックに移動します。

$('#mycontentarea').load('replacement.html', function() {
    //Anything in here is executed once the content has been returned successfully
    console.log($("#mycontentarea").children().attr("id"));
});

上のドキュメントからload

「完全な」コールバックが提供されている場合は、後処理とHTML挿入が実行された後に実行されます。コールバックはjQueryコレクション内の要素ごとに1回発生し、これは各DOM要素に順番に設定されます。

于 2012-04-27T10:40:06.323 に答える