2012-12-03 60 views
1

目前我正在研究一個小的jQuery元素。我有2個主要複選框:ja和nee。當其中一個框被選中時,一個子菜單打開,子菜單中的複選框根據您檢查的主複選框(ja或nee)填入。這工作正常。檢查/取消選中複選框,具體取決於選中的複選框(if/else)

在子菜單中,用戶可以選擇帶有初始點擊填充的複選框組的ja或nee。我遇到的問題是,當用戶首先檢查主複選框爲「nee」,然後將子菜單中的複選框更改爲「ja」時,主複選框停留在「nee」處。

所以我想我可以用if/else語句解決這個問題,但我無法弄清楚如何去做。我做到了這一點,以便所有的複選框在沒有被選中時都有一個「檢查」狀態或沒有狀態,它們也有類(「ja」和「no」)。

這是我現在使用

$('.open_sub_ja').click(function() { 
       $(this).parents('.container_vragen').find('.ja').attr('checked', this.checked); 
       $(this).parents('.container_vragen').find('.nee').removeAttr('checked'); 
      }); 

      $('.open_sub_nee').click(function() { 
       $(this).parents('.container_vragen').find('.ja').removeAttr('checked'); 
       $(this).parents('.container_vragen').find('.nee').attr('checked', this.checked); 
      }); 

       $('.ja').click(function() { 
        $(this).parents('.antwoorden').find('.ja').attr('checked', this.checked); 
        $(this).parents('.antwoorden').find('.nee').removeAttr('checked'); 
       }); 

       $('.nee').click(function() { 
        $(this).parents('.antwoorden').find('.ja').removeAttr('checked'); 
        $(this).parents('.antwoorden').find('.nee').attr('checked', this.checked); 
       }); 

一個小的jsfiddle可以在這裏找到http://jsfiddle.net/Macjm/的jQuery代碼。任何幫助都很有幫助,因爲我對if/else語句知之甚少。

回答

0

有兩個問題在這裏:

  1. 你需要能夠跟蹤其janee輸入相關檢查,其他檢查子菜單的janee輸入。

  2. 你必須能夠檢查父janee輸入當計數等於子菜單janee輸入數量。要做到這一點

的一種方法是用幾個變量和一些額外的檢查。

我會在這裏介紹ja的輸入案例。 nee輸入使用相同的過程。

要啓動.ja點擊功能我加了兩個變量現有的代碼之後:

var _ja = $(this).parents('.submenu').find('.ja'); 
var _jaCount = 0; 

_ja是所有的子菜單ja輸入的jQuery對象。 _jaCount是一個變量,用於跟蹤有多少個ja輸入被檢查。

然後我做了檢查這樣的:

_ja.each(function(){ 
    if($(this).prop('checked') == true){ 
     _jaCount++; 
    } 
}); 

在這裏,我通過所有的子菜單迭代ja輸入和檢查,看看他們是否被選中。如果他們是我通過增加1

我coutner此檢查我有以下statment後:

if(_jaCount == _ja.length){ 
    $('.open_sub_ja').prop('checked',true); 
    $('.open_sub_nee').prop('checked',false); 
}else{ 
    $('.open_sub_ja').prop('checked',false); 
    $('.open_sub_nee').prop('checked',false); 
} 

這樣做是什麼檢查,看看是否計數等於在ja投入量子菜單。如果是這樣,則將輸入的父親ja設置爲選中,並將父母nee輸入設置爲未選中。此外,如果計數不相等,則會將父母雙方設爲未檢查狀態,因爲這樣您就有了混合狀態。如果這是不可取的,那麼你只需要刪除其他情況。

通過這種方式,你可以鏈接submeu ja輸入狀態父狀態。

Here is a modified version of your fiddle.

相關問題