1

ユーザーがナビゲーション バーの一部 (同じページに含まれています) をクリックするとコンテンツが変更される DIV を持つ 1 ページを持つアプリがあります。

これが私の1ページアプリにある私のdivです

<div id="content">
</div>

ここで、jQuery メソッドを使用して、この DIV に他の html ファイルを.load()入力します (削除した .load メソッドにフィードされる HTML ファイルとタグなど…)。

これが私のJavaScriptです

$("#content").load("views/"+ pageName + ".html", function(){
// do stuff… like load JavaScript files, etc...
}).fadeIn("fast");  

これは.load()正常に機能していますが、DOM にロードされたら関数をアタッチしたい を使用してページに取り込まれるコンテンツです。

上記の JavaScript を使用して、HTML ページから次のコンテンツを .load() するとします。

<p id="newText"> Blah blah blah blah blah blah blah blah blah blah blah</p>

.live()これがロードされたらイベントを発生させたいのですが、何にバインドすればよいかわかりませ.on().ready()

$('#newText').load(function() { 
   alert("Handler for .load() called for newText. This is in the DOM and loaded!");
});

これについてどうすればいいのか誰か知っていますか?

* アップデート *

わかりました、おそらく説明する必要があります... 私はこのアプリを別の開発者から継承しており、悪いアーキテクチャ/モデルで構築されていると思います。とにかく、ロードされたページまたはビューには多くの非表示のタブ/トグルされたコンテンツがあります (したがって、私はアーキテクチャが好きではありません)。そのため、ビュー/HTML がロードされているにもかかわらず、そのコンテンツの一部が最初にロードされたときに DOM で利用できない場合があります。そのため、jQuery Ajax .load() の使用に加えて、何かが DOM にロードされたことを検出したいと考えています。

4

2 に答える 2

1

ネイティブ.load()コールバックのいずれかを使用します。

$('#result').load('ajax/test.html', function() {
  alert('Load was performed.');
});

または、すべての Ajax リクエストが完了したときに呼び出されるハンドラーを登録する.ajaxStop() 。

$('#result').ajaxStop(function() {
    alert('Triggered ajaxStop handler.');
});
于 2012-10-15T14:23:27.103 に答える
0

loadロードの完了後に実行される関数を渡すことができます。

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

$('#result').load('ajax/test.html', function() {
  alert('Load was performed.');
});
于 2012-10-15T14:37:34.887 に答える