2010-11-21 5 views
4

jQuery ajaxStart&ajaxComplete live?私はうまく働いてい以下

$(".new_comment").ajaxStart(function() { 
    ajaxBanner('show'); 
    // Disable button 
    $("input[type=submit]", this).attr("disabled", true); 
}); 
$(".new_comment").ajaxComplete(function() { 
    ajaxBanner('hide'); 
    // Re-enable button 
    $("input[type=submit]", this).removeAttr("disabled"); 
}); 

問題は、ページがコメントフォームをレンダリングする場合にのみ動作することです。多くの場合、コメントフォームはページに動的に挿入され、これは失敗します。

上記のlive()を作成するにはどうすればよいですか?

おかげ

+0

「commentform」が存在するかどうかを確認することができます。 – kobe

+0

?しかし、それは呼ばれていないのですか? – AnApprentice

+0

これは動的に挿入したときに正常に動作しない場合、ライブは正常に動作するはずです – kobe

答えて

1

これはテストされていませんが、試してみる価値は、おそらく?

$(".new_comment").live("ajaxComplete", function() { 
    ajaxBanner('show'); 
    // Disable button 
    $("input[type=submit]", this).attr("disabled", true); 
}); 

の代替を使用すると、動的にコメントフォームを注入したときにイベントを追加することですが、私たちは(インジェクションが起こる、すなわち場所)そのために、あなたのコードのいくつかのより多くをする必要があります。

+0

良いアイデアは、それを試したが、それは動作していません... – AnApprentice

+0

AJAX呼び出しはまだ動作しますか? – Marko

+0

ya AJAXは素晴らしい仕事をしています。私は追加する必要があります、私は複数のコメントフォームをページにし、時々新しいものを注入..フォームタグはどのようなものです:

AnApprentice

0

私はjQueryの選択に結合したときに正確にどのように.ajaxComplete()作品わからないんだけど、私はあなたがdocumentつまり、あなたが存在することがわかっている要素に結合し、その後、通常のセレクタを使って、簡単にあなたの問題を解決することができ数える:

$(document).ajaxStart(function() { 
    ajaxBanner('show'); 
    // Disable button 
    $(".new_comment input[type=submit]").attr("disabled", true); 
}).ajaxComplete(function() { 
    ajaxBanner('hide'); 
    // Re-enable button 
    $(".new_comment input[type=submit]").removeAttr("disabled"); 
}); 
関連する問題