简单的手风琴与jquery



我用jquery构建了一个简单的手风琴。我尝试了jquery.next()方法,但没有成功,点击后什么也没发生。我应该使用另一个jquery方法吗?或者我走对了,知道吗?这是我的html:

        <article class="TimBox">
          <img src="/images/Tim01.jpg">
          <div class="TimBoxTekst">
            <h2>Title 1</h2>
            <h3>Subtitle 1</h3>
            <div class="LinkBox">
              <a href="#">more<i class="fa fa-angle-right"></i></a>
            </div>
          </div>
          <div class="clear"></div>
          <div class="TimBoxBio">Hidden text 1</div>
        </article>
        <article class="TimBox">
          <img src="/images/Tim01.jpg">
          <div class="TimBoxTekst">
            <h2>Title 2</h2>
            <h3>Subtitle 2</h3>
            <div class="LinkBox">
              <a href="#">more<i class="fa fa-angle-right"></i></a>
            </div>
          </div>
          <div class="clear"></div>
          <div class="TimBoxBio">Hidden text 2</div>
        </article>

这是我的jquery:

$(document).ready(function() {
    $(".TimBox .LinkBox").click(function() {
        if($(this).next(".TimBoxBio").is(":visible")){
            $(this).next(".TimBoxBio").slideUp();
        return false;
        } else {
            $(".TimBox .TimBoxBio").slideUp();
            $(this).next(".TimBoxBio").slideToggle();
        return false;
        }       
    });
});

这里是css:

.TimBox .TimBoxBio{
    position:relative;
    display:none;
}

.next()用于获取紧随其后的同级。在您的情况下,.TimBoxBio不是相对于.LinkBox.的下一个元素

试试这个:

$(document).ready(function() {
    $(".TimBox .LinkBox").click(function() {
        var $bio = $(this).closest('.TimBox').find('.TimBoxBio');
        if($bio.is(":visible")){
            $bio.slideUp();
            return false;
        } else {
            $(".TimBox .TimBoxBio").slideUp();
            $bio.slideToggle();
            return false;
        }       
    });
});

请参阅此处的工作小提琴:http://jsfiddle.net/dou457gk/

最新更新