2

私は次のようなajax(投稿)リクエストを介して自分のページにコンテンツを配置しています:

$("input#ViewMore").click(function() {
            var data = { before: oldestDate, threadId: 1 };
            $.post("/Message/More", data,function(html) {
                $('tbody#posts').prepend(html);
                return false;
            },
            "html");
            return false;
        });

htmlが戻ってくると次のようになります。

メッセージ出力見積もり

これはすべて正常に機能しており、問題はありません。

この問題は、ajax呼び出しによって追加された「quote」アンカーにイベントがフックされている場合に発生します。具体的には、そのアンカーのjQueryイベントは発生しません。なんで?

例えば:

$("#quote).click(function() { ... });

何もしません。イベントがないように動作します。ajaxリクエストで追加されなかったページ上の他のアンカーで機能していることはわかっているので、コードエラーは発生しません。さらに、ページを更新すると正しく起動します。これが発生している理由はありますか?アンカータグでそのイベントを何らかの方法で再初期化する必要がありますか?何か案は?

jQuery 1.3.1(1.2.6でも動作しませんでした)を使用しているので、コード自体ではなく、私の実装であると思います。

4

4 に答える 4

5

jQuery1.3のEvents/live使用できます。liveは、現在および将来一致するすべての要素のイベントにハンドラーをバインドします。

于 2009-01-31T16:23:02.063 に答える
2

新しいコンテンツがAjaxでページに追加されたら、それらの新しい要素にすべてのイベントを再登録する必要があります。

于 2009-01-31T16:21:02.440 に答える
0

に変更されました

$('#quote').live("click", function() { ... } 

$("input#ViewMore").live("click", function() { ... }

うまくいかないようです

于 2009-01-31T16:36:30.303 に答える
0

CMSの回答は役に立ちましたが、最終的には次のようになりました。

[もっと見る] ボタン イベントは、それを追加した AJAH リクエストの外部にあったため、同じままです。

$("input#ViewMore").click( function() { ... }

AJAH リクエストの内外で追加されるイベントを持つ要素は、ライブ メソッドを使用する必要がありました。

$('#quote').live("click", function() { ... }

魔法のように動作します!

于 2009-01-31T16:47:10.830 に答える