2010-03-29 65 views
0

我想知道如何用jquery正確寫入if語句。我有一大堆的div,每個單擊時使用toggleClass擴展div的寬度。這工作正常,但我想編寫一個if語句來檢查其他div是否具有相同的類應用,如果這樣合同div,然後展開下一個div(希望是有道理的),我的代碼到目前爲止:jquery if語句幫助

HTML:

<div class="content-block"> 
    <h2>Title</h2> 
    <p>Content...</p> 
    <a class="expand" href="#">Expand View</a> 
</div> 
<div class="content-block"> 
    <h2>Title</h2> 
    <p>Content...</p> 
    <a class="expand" href="#">Expand View</a> 
</div> 
<div class="content-block"> 
    <h2>Title</h2> 
    <p>Content...</p> 
    <a class="expand" href="#">Expand View</a> 
</div> 
<div class="content-block"> 
    <h2>Title</h2> 
    <p>Content...</p> 
    <a class="expand" href="#">Expand View</a> 
</div> 

JQUERY:

$(document).ready(function(){ 
$('a.expand').click(function(){ 
    $(this).parent('.content-block').toggleClass('wide'); 
}); 

});

回答

3

,如果在這種情況下,你可以是這樣做的,沒有必要的,然後從所有兄弟姐妹中刪除該類。

+0

@Nick非常感謝我的讚賞 – mtwallet 2010-03-29 20:02:23

0

你想寫的東西是這樣的:

$(document).ready(function(){ 
    $('a.expand').click(function(){   
    $(this).parent('.content-block').toggleClass('wide') 
      .siblings('.wide').removeClass('wide'); 
    }); 
}); 

這將觸發對父類廣泛:

var otherExpanded = $('.content-block.wide'); 
if (otherExpanded.length) 
    //Do things 
1

無需if語句,只是在運行任何東西是removeClass()具有適用於它的wide類:

$(document).ready(function(){ 
    $('a.expand').click(function(){ 
     $('.content-block.wide').removeClass('wide'); 
     $(this).parent('.content-block').addClass('wide'); 
    }); 
}); 

而對於性能考慮,只使用addClass()removeClass()代替toggleClass()

+0

這不會有相同的行爲,目前他的代碼在點擊時摺疊當前的'wide' div,這就消除了這種能力。 – 2010-03-29 16:47:53

+0

@尼克,恐怕我沒有看到你在說什麼。我的代碼首先找到當前的'wide' div,從中移除'wide'類。然後它將「wide」類加入到現在的「寬」div中。如果我誤解了,請告訴我。 – 2010-03-29 17:24:33

+0

如果你點擊了當前的div,它有'.wide','toggleClass()'將它刪除...因爲你將它從全部刪除,然後添加,你每次都使父'.wide',沒有可能崩潰它。這不是OP的內容,你通過採取這條路線來消除崩潰能力。 – 2010-03-29 17:37:21