2015-10-13 74 views
0

我的代碼

$('.radio-box').click(function() { 
    $(this).parents('.container-radio-box').find('.select').removeClass('state-active'); 
} 

和我想要得到它,這樣它會發現點擊.radio-box元素,尋找它的包含元素下列位 - .container-radio-box - 然後從其中的任何.select元素中刪除活動狀態。

我有一種感覺,我可以用的東西沿着

$('.radio-box').not(this).each(function() { 

行然而這是一個有點複雜,因爲有無數.container-radio-box元素,他們都需要單獨對待。例如。只有.select元素在被點擊的.radio-box的包含div內才能被腳本修改。

有誰知道我該如何做到這一點?

編輯: 我修改我的腳本如下所示:

// radio-box 
$('.radio-box').click(function() { 

    $(this).parents('.container-radio-box').find('.radio-box').removeClass('state-active'); 

    var el = this; 
     $(this).parents('.container-radio-box') 
       .find('.select') 
       .filter(function(index){ 
        return this != el; 
           }) 
       .removeClass('state-active'); 


    $(this).find('input').prop("checked", true); 
    $(this).addClass('state-active'); 

}); 

和也曾在這裏上傳頁面,所以你可以看到它是如何工作 - http://www.mattpealing.co.uk/_concept/brdcr/form/

我想得到它,以便左列中的.select元素可以保持選中直到其中一個其他列被選中,在這種情況下,活動狀態將被刪除。

但似乎點擊左欄也從包含它裏面的.select元素去掉活動狀態

+0

看來布里米的答案是完美的,除非我們錯過了一些東西。如果它不起作用,請包括一些示例HTML,這將有助於很多! –

回答

1

讓jQuery的做您辛苦的工作 - 選擇點擊的兄弟姐妹.radio-box,只搜索其中的.select元素:

$('.radio-box').click(function() { 

    // Deselect all radio boxes 
    $(this).parents('.container-radio-box').find('.radio-box').removeClass('state-active'); 

    // Remove active state from inner options in other radio boxes 
    $(this).siblings() 
     .find('.select') 
     .removeClass('state-active'); 

    // Select this radio box 
    $(this).find('input').prop("checked", true); 
    $(this).addClass('state-active'); 

}); 
+0

以下完美謝謝! MARRY ME TOM – pealo86

0

您可以過濾收集和比較DOM元素:

var el = this; 
    $(this).parents('.container-radio-box') 
      .find('.select') 
      .filter(function(index){ 
       return this != el; 
          }) 
      .removeClass('state-active'); 
+0

謝謝!不幸的是它仍然不能正常工作,我現在編輯了我的問題,並在網上發佈了一個頁面示例 – pealo86

+1

這不起作用:它選擇所有'td'中的所有'.select'元素,包括點擊一個,然後嘗試通過與'td'比較來過濾那些'.select'元素。看到我的回答在 –