2012-09-12 52 views
1

我有以下代碼:jQuery的addClass

var selectedMarkerClass = 'was-selected'; 

$('.group_1').change(function() { 
    $(this).addClass(selectedMarkerClass); 

    if ($('.' + selectedMarkerClass).length == $('.group_1').length) { 
     $('#2').removeClass('red'); 
    } 
}); 

這裏是有問題的HTML:

<input class="single_text_input group_1" type="text" name="primary_referral" /> 
<input class="single_text_input group_1" type="text" name="secondary_referral" /> 
<input class="group_1" type="radio" name="referral_open" value="Yes" /> Yes 
<input class="group_1" type="radio" name="referral_open" value="No" /> No 
<span id="2" class="red">Referral Group</span> 

現在發生的事情是,這兩個單選按鈕在該組中必須進行更改才能將該課程從span中刪除。我希望它能夠在組中只有一個單選按鈕被改變的情況下工作。

+2

安置自己的HTML標記代碼 – Curt

+0

我不包括它的第一輪去道歉。我更新了我的帖子。 – user1647550

+0

您是否檢查過.length的數值?寫出來給console.info或屏幕。 –

回答

1

使用click事件不是change事件。

$('.group_1').click(function() { 
    $(this).addClass(selectedMarkerClass); 

    if ($('.' + selectedMarkerClass).length == $('.group_1').length) { 
     $('#2').removeClass('red'); 
    } 
}); 

更新:

if ($('.' + selectedMarkerClass).length == $('.group_1').length) 

是絆倒你。只有在選定的課程已添加到每個無線電廣播中,並且只有在單擊每個廣播時才能添加所選的課程,您將移除紅色課程。

一個更好的辦法是:

$('.group_1').click(function() { 
    $('#2').removeClass('red'); 
}); 

更少的代碼往往是次爲宜。你不能取消選擇收音機。所以點擊收音機確保至少有一個點擊。

+0

這似乎產生了與我現在所得到的結果相同的結果。在它工作之前,我必須單擊組中的每個按鈕。 – user1647550

+1

@ user1647550新增了對問題的深思熟慮的解釋和更好的解決方案。 – iambriansreed

+0

我非常感謝你的時間。也許我誤解了你的解決方案,但是我試圖完成的是一旦某個類(group_1)的所有輸入元素都被點擊(或者最好被改變了),就從一個span中刪除一個類。輸入的元素將是一個混合包,收音機,文本,複選框等...再次感謝您的幫助@匿名下來投票是跛腳 – user1647550

0

請嘗試使用click事件。您看到更改發生在第二次點擊之後,因爲change在第一個單選按鈕失去焦點後被觸發。

0

在兩個單選按鈕發生變化後,$('.' + selectedMarkerClass).length == 2$('.group_1').length == 4因爲您正在使用.group_1類用於單選按鈕,也用於輸入[type = text]。

需要篩選單選按鈕,使用"[name=referral_open]"

var selectedMarkerClass = 'was-selected'; 

$('.group_1').change(function() { 
    $(this).addClass(selectedMarkerClass); 

    if ($('.' + selectedMarkerClass).length == $('.group_1[name=referral_open]').length) { 
     $('#2').removeClass('red'); 
    } 
}); 
+0

謝謝@ K.K爲您的答案。它將爲我所需要的工作。我試圖避免這種解決方案,因爲我正在使用的窗體上有很多單選按鈕組(超過4oo字段),並且希望不要爲每組單選按鈕創建腳本。再次感謝! – user1647550