2012-08-13 87 views
0

我正在創建一個頁面來管理電子郵件訂閱,並且我無法計算出從每個組選項的全部取消訂閱。jQuery:多個組,每個都有全局選擇器

問題

我的問題是,我不知道如何使所有選項取消訂閱激活在取消訂閱列對應於特定的組單選按鈕。

在檢查Un-subscribe列中的單選按鈕時,我還需要將.selected類添加到它們的標籤中,以便使它們的樣式可視化地幫助傳達選項已被選中。

還要注意的是一個特定的羣體,當訂閱選項被選中之內,該所有複選框的這個特定的羣體變得氾濫,類.selected被去除未訂閱。

我知道這是一個有點混亂(或很多),所以我創建的這個DEMO

正如您將在JS評論中看到的那樣,我可以選擇單選按鈕,但是所有組的所有無線電按鈕都會被檢查而不是特定的單選按鈕組。

我也試過使用.parent(),.parents(),.closest()方法,但我只是無法使它工作。

對此非常感謝。

在此先感謝。

回答

1

http://jsfiddle.net/8MHHa/1/

$(".unsubs-chkbx-group").click(function() { 
    $(this).parents('table').first().find('.opt-out input:radio').attr('checked', true); 
    $(this).parents('table').first().find('.opt-out label').addClass('active'); 
    //$('.opt-out input:radio').attr('checked', true); 
    //$('.opt-out label').addClass('active');  
}); 
+0

男人,我是如此接近。這正是我需要的。謝謝Keith! – 2012-08-13 19:58:52

+0

對不起,我剛剛注意到我無法從相應的未訂閱標籤中刪除類「.active」。我所做的是從所有組的所有取消訂閱標籤中刪除類「.active」。以下是我到目前爲止所嘗試的內容:http://jsfiddle.net/rzea/JpmFc/6/再次感謝。 – 2012-08-13 20:10:43

+1

http://jsfiddle.net/fZxLv/2/ – Keith 2012-08-13 20:23:15

1

爲此,您可以像下面這樣:

$(".unsubs-chkbx-group").change(function() { 
    var $table = $(this).closest('tbody'); 

    // uncheck all 
    $('tr:not(.group) input', $table).prop('checked', false); 
    $('label', $table).removeClass('selected'); 

    if(this.checked) { 
     var $elements = $('.opt-out', $table); 
     $('label', $elements).addClass('selected'); 
     $('input', $elements).prop('checked', true); 
    } 
}); 

$('tbody input[type=radio]').change(function() { 
    var $element = $(this); 
    var $row = $element.closest('tr'); 
    $('label', $row).removeClass('selected'); 

    $element.parent().addClass('selected'); 
}); 

demo

+0

「Tocallo」這很棒。但是,如果選擇了*訂閱*選項,我無法取消選中該複選框並從相應的取消訂閱標籤中刪除類「.active」。那有意義嗎?這是我迄今爲止所嘗試的,但它並沒有按照我需要的方式工作:http://jsfiddle.net/rzea/JpmFc/6/ - 如果您檢查任何*訂閱*選項,所有*取消訂閱*選項將刪除類「.active」('.selected')。謝啦。 – 2012-08-13 20:15:11

+0

@Ricardo查看我的更新。 – 2012-08-13 20:27:56

+0

這太棒了!唯一缺少的是從組中選擇所有*取消訂閱*選項,然後選擇該組的所有*取消訂閱複選框也應該被選中。 Tnx提前! – 2012-08-13 21:06:01