多个类名 - 如何只查找下一个直接名字?

时间:2012-07-18 07:02:36

标签: jquery

我有3个扩展div,具有相同的strcuture。类似的东西:

<div class="expand">
    <h3 class="more">Click to expand</h3>
    <div class="wrapper">Iasdfgh qwerty zxcvbn</div>
</div>

Jquery

$(document).ready(function(){
    var toggleButton = $('.expand h3.more');
    var expandWrap = $(toggleButton).next('.wrapper');
    $(toggleButton).click(function(){
        if ($(expandWrap).is('.closed')) {
            $(toggleButton).removeClass('closed');
            $(expandWrap)
                .removeClass('closed')
                .slideDown('slow');

        } else {
            $(expandWrap)
                $(expandWrap).slideUp('slow', function(){
                    $(this).addClass('closed');
                    $(toggleButton).addClass('closed');
                });
        }
    });
});

现在,当我点击“点击展开”h3时,所有.wrapper都会向上和向下滑动。我怎样才能定位下一个立即.wrapper,因此一次只能切换一个?

3 个答案:

答案 0 :(得分:0)

也许使用函数next():

http://api.jquery.com/next/

答案 1 :(得分:0)

试试这个

$(document).ready(function(){
    var toggleButton = $('.expand h3.more');

    $(toggleButton).click(function(){
        var thisToggleButton = this;
        var expandWrap = $(thisToggleButton ).next('.wrapper');
        if (expandWrap.is('.closed')) {
            $(thisToggleButton ).removeClass('closed');
            expandWrap
                .removeClass('closed')
                .slideDown('slow');

        } else {
           expandWrap.slideUp('slow', function(){
                    $(this).addClass('closed');
                    $(thisToggleButton).addClass('closed');
                });
        }
    });
});

答案 2 :(得分:0)

你可以简化这一点:

$(function(){
    $('.expand h3.more').on('click',function(){
        $(this).next('div.wrapper').toggle('slow');
    });
});

jsFiddle:http://jsfiddle.net/QzHYX/

编辑:请注意,如果您使用的是较旧版本的jQuery,则必须将on更改为live才能生效。