0

我想知道如何用 jquery 正确编写 if 语句。我有一堆 div,每个都有一个锚点,单击时会使用 toggleClass 扩展 div 的宽度。这很好用,但我想编写一个 if 语句,检查其他 div 是否应用了相同的类,如果是,则收缩该​​ div,然后展开下一个 div(希望这是有道理的),我的代码到目前为止:

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>

查询:

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

});

4

3 回答 3

3

你可以这样做,在这种情况下不需要 if :

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

这将切换父级上的宽类,然后从其所有兄弟姐妹中删除该类。

于 2010-03-29T16:43:47.977 回答
1

不需要 if 语句,只需在应用了该类removeClass()的任何东西上运行:wide

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

为了性能起见,只需使用addClass()andremoveClass()而不是toggleClass()

于 2010-03-29T16:46:13.483 回答
0

你想写这样的东西:

var otherExpanded = $('.content-block.wide');
if (otherExpanded.length)
    //Do things
于 2010-03-29T16:43:14.063 回答