1

liAJAX経由で動的に生成されるリストがあります:

<ul>
  <li id="hello"></li>
  <li id="world"></li>
  <li id="helloWorld"></li>
</ul>

スクリプトには、次のようなグローバル変数もあります。

var world = 'world';

ドキュメントの準備ができたら、リストが読み込まれるとすぐにli、グローバル変数と同じ ID を持つアイテムを見つけたい:

$('ul').find('#' + world);

.on()ロード自体の終了を除いて、トリガーする他のイベントがないため、ここでは従来のイベントリスナーを使用できません。

次のステップは、ロード スクリプトでカスタム イベントをトリガーすることでした。

$('ul').trigger('loadingDone');

そして、それを聞いてください:

$('ul').one('loadingDone', theFunctionThatDoesTheSearch );

問題は、これが失敗し、生成された要素を完全に無視したことです。

考えられる解決策は、これらの操作を ajax 呼び出しの成功メソッド内で実行することであることはわかっていますが、構築中のアプリの現在のアーキテクチャではそれが許可されていません。(成功したAJAXメソッド内でイベントをトリガーできますが、そこで検索を行うことはできません)

基本的に私が求めているのは、読み込みスクリプトが完了したことを知らせてくれる代替ソリューションと、読み込みスクリプト自体の内部でフィルタリングを行わずに生成されたコンテンツをフィルタリングする方法です。

4

2 に答える 2

1
$(document).on("customevent","ul",function(){
console.log("event triggered from inside the ajax success handler");
});

$.ajax({
    url:'/echo/json/',
    success:function(){
    $('div').append("<ul><li>asd</li></ul>");
        $("ul").trigger("customevent");
    }
});

http://jsfiddle.net/xp7sr/2/

于 2012-05-15T20:26:18.110 に答える
0

ajax リクエストが jquery を介して実行される場合は、 http://api.jquery.com/ajaxComplete/を試すことができます。

于 2012-05-15T20:24:01.400 に答える