2012-05-06 29 views
0

假設我有一個按鈕列表。每個按鈕都屬於「.button」類。每個按鈕在視覺上都以其選定狀態出現。每個按鈕還有一個將其與其給定功能相關聯的造型類, 「.widget-1」,「.widget-2」,因此<div class="button widget-1">等等。當點擊一個按鈕時,我執行:$(this).addClass("selected")如何使用jQuery確定給定類的剩餘元素?

請注意,我有任意數量的按鈕,並且我永遠不知道在任何給定時間我將擁有多少個按鈕,因爲列表是數據驅動的,大小和樣式在運行時動態。

但是,在只有一個按鈕保持未勾選狀態時,必須滿足條件的情況,即:一個沒有添加「.selected」類的按鈕。

考慮用於說明目的下面的代碼:

for (var n = 0; n < Math.round(Math.random() * 10); n++) { 
    $('<button />').attr({class: 'button widget-' + n}) 
    .appendTo('body') 
    .click(function(){ 
     $(this).addClass('selected'); 
     // Am I the last .button without .selected class? 
    }); 
} 

這是棘手比它聽起來:認識到,每個按鈕將不知道這是最後一次,直到在同類其它任意按鈕被選中。

請幫忙嗎?

回答

1

用這段代碼替換你的點擊處理程序主體,它將檢查是否有其他按鈕被選中。

$(this).addClass('selected'); 
if($('button.selected').length == 0) { 
    alert("This is the last button"); 
} 

如果帶班按鈕集合的「選擇」大小加選擇點擊的按鈕後級是零,那麼你知道這是最後一個。

現在,你的問題有點含糊不清,你是否打算只計算帶有「按鈕」類的按鈕(「我是最後一個沒有選擇類的按鈕」)還是你打算計算所有按鈕元素。如果您只想計算與類「按鈕」按鈕,然後你會使用:

$(this).addClass('selected'); 
if($('button.button.selected').length == 0) { 
    alert("This is the last button"); 
} 
+0

謝謝,對不起歧義:你的第二個例子就是我一直在尋找。我能夠讓自己的狀態開火,但必須使用你的建議的一個細微變化,即:'if($('。button.selected')。length == $('。button')。length - 1 ){alert(「我是最後一個!」);}'再次非常感謝,無論這個挑剔已經困擾了我好幾個小時! – lincolnberryiii

+0

我很高興能夠提供幫助。祝你好運! – jmort253

相關問題