4

無限スクロールのページがあります。ajax機能は、最初に読み込まれたときにページに存在するフォームでは正常に機能しますが、無限スクロールajax機能から読み込まれたフォームでは機能しません。答えを探すために約5日間検索しましたが、まだ検索していません。これがjavascriptの一部です:

$("form:not(.member)").submit(function() {
     var status_id = $('#status_id').val(), 
    etc..........

この部分の理由は:not(.member)、検索フォームなど、ページ上の他のフォームがスクリプトに含まれていないためです。

私はもう試した

 $("form:not(.member)").live('submit', function() {

 $("form:not(.member)").on('submit', function() {

と同様

 $('body').delegate('submit', 'form:not(.member)', function() {

これらはいずれも、最初のページの読み込み後に読み込まれたフォームでは機能しません。他に何か提案はありますか?ちなみに私はjquery1.7.1を使用しています。私も試しました

$("form:not(.member)").bind('submit', function()
4

4 に答える 4

4

ここで間違ったイベント委任を使用しています。

フォーム動的に読み込まれるため$("form:not(.member)")、コードの実行時に含まれず、まだ存在しません。

フォームを含む親要素で委任を使用します。

$('#formsContainer').on('submit', 'form:not(.member)', function() {
     ...
});
于 2012-01-22T17:54:10.333 に答える
2

上記の答えはどれもうまくいきませんでした。解決策は、すでにロードされているものを含むすべてのコメントフォームにonclick="function"を割り当てることでした。

于 2012-01-30T00:25:58.687 に答える
2

あなたの構文は間違っています、それだけです。これらの機能は機能するはずです。.on()例として使用:

$('#someListener').on('submit', 'form:not(.member)', function() { ... });

someListenerAJAX 関数によって決して破棄されない祖先要素はどこにありますか。破棄される要素にバインドしようとすると、リスナーも失われます。

認めざるを得ないのは、その'form:not(".member")'部分が私にも似合わないとは思わない. それは正しい構文notですか? 私はここであなたの言葉を信じています。

とにかくもっと良い方法があります: #someListener が (検索フォームのような) 他のフォームを持たない祖先であるか、この特定の種類のフォームにクラスを与えます。したがって、フォームを除外する代わりに、.memberこの種のフォームだけをターゲットにします。

$('#someListener').on('submit', '.dynamicForm', function() { ... });

または、Ajax コンテンツ ブロック (フォームとすべて) に何らかのラッパーがある場合は、それにクラスを追加して (たとえば、".ajaxBlock")、代わりに次のようにすることもできます。

$('#someLIstener').on('submit', '.ajaxBlock form', function() { ... });
于 2012-01-22T17:52:53.870 に答える
0
$("#parentContainer").on("submit", "form:not(.member)", function() { // code });
于 2012-01-22T18:02:55.853 に答える