2014-10-28 52 views
1

如果標題沒有真正描述我的問題,我很抱歉。我仍然是新來的javascript/jquery,這是我如何理解問題...

我正在使用一個按鈕來調用一個函數,將一個元素附加到我的網頁。

<button id="bartspbyu" class="btn btn-xs btn-success add-alert" onClick="this.disabled = 'disabled';">Add</button> 

正如您所看到的,當它被點擊時,它會自行禁用。它還使用腳本將文本從「添加」更改爲「已添加」:

$('.add-alert').on('click', function() { 
    $('#added-alert').fadeIn('slow'); 
    setTimeout(function() { 
    $('#added-alert').fadeOut('slow'); 
    }, 2000); 
    $(this).text('Added'); 
}); 

用戶可以選擇刪除它們添加的元素。當他們刪除元素,該按鈕會變爲再次啓用,使用下面的腳本:

//Reactive Add Button 
    $(document).on("click", ".drartspbyu", function(){ 
    $("#bartspbyu").removeAttr("disabled"); 
}); 

這一切正常,但我試圖讓它在按鈕上的文字改回「添加」。我做了以下:

//Reactive Add Button 
$(document).on("click", ".drartspbyu", function(){ 
    $("#bartspbyu").removeAttr("disabled", function(){ 
     $(this).text('Add'); 
    }); 
}); 

它再次啓用按鈕,但它不是編輯文本。我不確定是否已經錯誤地設置了$(this)或者整個事情是錯誤的。

我意識到我可以做類似$("#bartspbyu").text('Add');的事情,但我使用$(this)的原因是因爲有數百個這些添加按鈕,我不想花費數小時來編輯每個單獨的ID(#bartspbyu是隻有400多個)之一。如果我能找到一種方法讓它從第一個實例中讀到#bartspbyu,那麼這將節省我數小時的工作時間,因爲我只需要執行Find + Replace並將其添加到所有內容中。

在此先感謝您的幫助!再一次,我仍然是新手,所以我意識到我可能錯過了一些超級明顯的東西。

+1

兩件事。一個 - 'removeAttr'沒有回調(http://api.jquery.com/removeattr/)。只需在下一行調用'.text()'(或鏈接調用)即可。其次,使用'.prop()'來改變禁用狀態 – Ian 2014-10-28 21:41:41

回答

4

removeAttr()沒有回調函數(http://api.jquery.com/removeAttr/)。你應該追加到文本(),因爲你想將它應用到相同的元素。

$("#bartspbyu").removeAttr("disabled").text("Add"); 

jQuery允許你'方法鏈'的功能。 $("")構造函數會構造一個對象,因此您可以應用多個對象,如移除屬性並更改文本。它的工作方式如同鍵入:

$("#bartspbyu").removeAttr("disabled") 
$("#bartspbyu").text("Add") 

優點是您實際上不需要重複自己。此外,因爲removeAttr()沒有回調函數(它只將屬性的名稱作爲參數),所以它不會執行您傳遞的匿名函數,因爲它不打算這樣做。

+0

哇,太簡單了!非常感謝。它正在工作。:) – SAULMARQ 2014-10-28 21:43:08

+0

我只知道它是「鏈接」 - 從來沒有想過它實際上來自哪裏...... [「菊花鏈」](http://en.wikipedia.org/wiki/Daisy_chain_(electrical_engineering))。謝謝@somethinghere – Lix 2014-10-28 22:10:41

+1

@Lix:這就是這個:http://en.wikipedia.org/wiki/Method_chaining – 2014-10-28 22:14:13

3

我不認爲removeAttr的第二個參數是回調。相反,只是把鏈接

$("#bartspbyu").removeAttr("disabled").text('Add'); 
1

我也建議擺脫JavaScript和只添加禁用代碼的jQuery的是第一塊您有內嵌的優勢。

+0

它不是真的問題,但它是更好的做法,因爲他已經實施了'.click()',這將是愚蠢的(: – somethinghere 2014-10-28 22:18:30

+0

我一定會這樣做。謝謝你的提示! – SAULMARQ 2014-10-28 22:31:28