2010-11-21 64 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 2010-11-21 21:06:04

+0

?但它沒有被稱爲? – AnApprentice 2010-11-21 21:08:47

+0

得到它,當你動態插入這不工作正常,然後生活應該工作 – kobe 2010-11-21 21:11:44

回答

1

這沒有測試,但也許值得一試?

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

另一種方法是添加事件時動態地注入註釋形式,但我們需要一些更多的代碼的瞭解(即是注射發生)。

+0

不錯的主意,只是嘗試過,但它不工作... – AnApprentice 2010-11-21 21:10:33

+0

AJAX調用仍然工作嗎? – Marko 2010-11-21 21:12:32

+0

雅AJAX是stil工作很好。我應該補充說,我在頁面上有多個註釋表單,有時會注入新的註釋表單。以下是表單標籤的樣子:

AnApprentice 2010-11-21 21:14:27

0

我不知道.ajaxComplete()工程究竟是如何綁定到一個jQuery選擇的時候,但我想你可以通過綁定到你知道存在一個元素,即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"); 
});