2016-06-11 30 views
0

我有這樣的HTML代碼:單的slideToggle()用於相同的元素

<div> 
    <div> 
     <button class="btn-slide"><span class="fa fa-caret-down" aria-hidden="true"></span></button> 
    </div> 
    <div class="block"> 
    ... 
    </div> 
</div> 

而且我已經在我的論壇模板幾個這樣的元素。我使用標準的js切換()腳本:

$(document).ready(function() { 
    $('btn-slide').click(function() { 
     $('.block').slideToggle(50); 
    }); 
}); 

當我點擊按鈕,所有的組件顯示或隱藏,但我想隱藏/顯示只有這個因素,我選擇。我認爲我可以在第3行使用$(this).childern,但是如果看到.block不是btn-slide childern。那麼我怎麼能達到我想要的呢?

回答

1

您可以使用parents()next()

$(document).ready(function() { 
 
    $('.btn-slide').click(function() { 
 
    $(this) 
 
     // get all div in parent level 
 
     .parents('div') 
 
     // get immediate sibling with class block after the element 
 
     .next('.block') 
 
     .slideToggle(50); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div> 
 
    <div> 
 
    <button class="btn-slide"><span class="fa fa-caret-down" aria-hidden="true"></span> 
 
    </button> 
 
    </div> 
 
    <div class="block"> 
 
    ... 
 
    </div> 
 
</div> 
 

 
<div> 
 
    <div> 
 
    <div> 
 
     <div> 
 
     <button class="btn-slide"> 
 
      <span class="fa fa-caret-down" aria-hidden="true"></span> 
 
     </button> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div class="block"> 
 
    ... 
 
    </div> 
 
</div>

+0

好吧,這是有益的,但如果我有另一個DIV結構?像這樣的:https://jsfiddle.net/t7reu8d1/? –

+0

@JakubWilk:已更新 –

0

變化與此

$(document).ready(function() { 
    $('.btn-slide').click(function() { 
    $(this.nextSibling.parentNode.nextElementSibling).slideToggle(50); 
    }); 
}); 
0

如果可能的話你的JS,你可以另一種獨特的類添加到block like block-new並使用切換事件到該類。

$(document).ready(function() { 
    $('.btn-slide').click(function() { 
     $('.block-new').slideToggle(50); 
    }); 
}); 

的jsfiddle - https://jsfiddle.net/dhananjaymane11/t7reu8d1/1/