2012-07-30 104 views
1

我想顯示僅div.card1當用戶點擊選擇菜單上的我已如何隱藏某些孩子()。 ()。 DIV?

<table id="flowerTheme"> 
    <tr> 
    <td> 
     <div class="card1"> 
     <div class="guess"><a href="#" id="flower1" class="quickFlipCta"><img src="Test Pictures/QuestionMark.gif" /></a></div> 
     <div class="remember"><a href="#" class="quickFlipCta"><img src="Test Pictures/flower.gif" /></a></div> 
     </div> 
    </td> 
    <td> 
     <div class="card2"> 
     <div class="guess"><a href="#" id="flower1" class="quickFlipCta"><img src="Test Pictures/QuestionMark.gif" /></a></div> 
     <div class="remember"><a href="#" class="quickFlipCta"><img src="Test Pictures/flower.gif" /></a></div> 
     </div> 
    </td> 
    </tr> 
</table> 

我有當用戶點擊圖像上切換的類「選擇」的功能。以下作品完美:

if($('.flowerThemePic').hasClass('selected') && $('.sixCardLayout').hasClass('selected')) { 
    $('#flowerTheme').css('display', 'inline'); 

然而,正如我前面所說,我想有不被顯示card2。我曾嘗試過:

if($('.flowerThemePic').hasClass('selected') && $('.sixCardLayout').hasClass('selected')) { 
     $('#flowerTheme').not('.card2').css('display', 'inline') 

但是這並沒有做任何事情。我也嘗試過:

if($('.flowerThemePic').hasClass('selected') && $('.sixCardLayout').hasClass('selected')) { 
     $('#flowerTheme').find('div').not('.card2').css('display', 'inline') 

但是這隱藏了兩張牌。顯示card1而不是card2的正確方法是什麼?

+1

$('。flowerThemePic')在您的代碼中,但現在顯示在您的HTML中。這使得你的問題難以遵循。 – 2012-07-30 17:45:07

回答

2
$('#flowerTheme').css('display', 'inline'); 
$('.card2').hide(); 
2

什麼:

$('#flowerTheme .card2').hide(); 

+0

['.hide()'](http://api.jquery.com/hide/)怎麼樣? – Bojangles 2012-07-30 17:57:30

2

首先,它看起來對我來說,card1card2id,不class。區別在於ID應該是唯一的,而類應該被重用。由於您使用card1card2來唯一標識這些卡,因此它們應該是ID。此外,他們可能也需要一個類:可能class="card",所以他們可以被稱爲一個組。其次,我認爲你應該使用CSS,而不是jQuery的實際隱藏/顯示。試想一下:

table#flowerTheme.selection-made :not(.selected) .card 
{ 
    display: none; 
} 

這將隱藏具有class="card"不具有任何父與class="selected"任何元素。請注意0​​上的.selection-made - 這允許默認情況下顯示每張卡片,但是當有人點擊時,您會執行$('#flowerTheme').addClass('selection-made');,然後執行$(this).addClass('selected');(假設您使用的是$(wherever selected goes).click())。從你的問題來看,你的問題確切地不清楚,selected類正在被添加,但我建議這樣做。它更容易維護,jQuery必須做更少的工作,並且讓您以一種非常簡單和容易的方式來擴展卡片列表。

0

你可以寫一個javascript函數來隱藏孩子......

function hideSpecificChildren(childClass){ 
    var child = document.getElementByClass(childClass); 
    if(tab.style.display == "block") { 
     tab.style.display = "none"; 
    }else { 
    tab.style.display = "block"; 
    } 
} 
0

試試這個:

$('#flowerTheme .card2').css('display','none').parent().show(); 

Demo

OR

$('#flowerTheme .card2').hide().parent().show(); 

Demo