2014-01-14 93 views
0

由於我的英語限制,很難解釋我要做什麼。因此,只要看到代碼:Jquery切換兩個或更多類

http://jsfiddle.net/mZV7R/1/

$("input").on("click", function() { 
$("."+$(this).attr('value')).toggle(); 
}); 

當被選中的人複選框,然後男子項目中。當男人和女人都被檢查時,則不應顯示任何內容。

如何做到這一點?

我想要做一些類似於操作與CSS類的可見性。但瀏覽器渲染引擎似乎做了一個操作。

回答

0

嘗試

$("input").on("click", function() { 
    var selector = $('input[name="human"]:checked').map(function() { 
     return '.' + this.value; 
    }).get().join('') 
    $('div').hide().filter(selector).show(); 
}); 

演示:Fiddle


要清理

<input type="checkbox" name="human" value="man">Man<br> 
<input type="checkbox" name="human" value="woman">Woman<br> 
<input type="checkbox" name="human" value="tall">Tall<br> 
<input type="checkbox" name="human" value="short">Short 


<div class="human tall man">Tall Man</div> 
<div class="human short man">Short Man</div> 
<div class="human tall woman">Tall Woman</div> 
<div class="human short woman">Short Woman</div> 

然後

var $humans = $('div.human'); 
$('input[name="human"]').on("click", function() { 
    var selector = $('input[name="human"]:checked').map(function() { 
     return '.' + this.value; 
    }).get().join('') 
    $humans.hide().filter(selector).show(); 
}); 

演示:Fiddle

+0

它工作。你能解釋你是如何實現它的嗎?我的意思是邏輯。 –

+0

@JamesKing第一步是創建一個選擇器,它將只選擇那些必須顯示的元素,因此我們遍歷所有檢查過的輸入並創建一個類似'.man.tall'或'.man.woman'的選擇器,然後我們隱藏所有的div,然後只顯示匹配給定選擇器的那些元素 –