2016-12-21 16 views
0

I以下のメニュー構造を持っている:親の兄弟を得ることは可能ですか?

<ul class="nav-menu"> 
    <li class="menu-item> 
     <a class="dropdown-toggle" href="">Item 1 <span class="dropdown-arrow"></span></a> 
     <ul class="sub-menu"> 
      <li class="menu-item">Item 1.1</li> 
     </ul> 
    </li> 
    <li class="menu-item">Item 2</li> 
    <li class="menu-item"> 
     <a class="dropdown-toggle" href="">Item 3 <span class="dropdown-arrow"></span></a> 
     <ul class="sub-menu"> 
      <li class="menu-item"> 
       <a class="dropdown-toggle" href="">Item 3.1 <span class="dropdown-arrow"></span></a> 
       <ul class="sub-menu"> 
        <li class="menu-item">Item 3.1.1</li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
    <li class="menu-item">Item 4</li> 
</ul> 

私はクリックに反応するJSコードのビット持っている:私は項目3.1をクリックした場合、例えば

$('.nav-menu').find('.dropdown-toggle').click(function(e) { 
    var _this = $(this); 
    var _arrow = _this.children('.dropdown-arrow'); 

    // Get all '.dropdown-arrow' elements above this 

    e.preventDefault(); 
}); 

は、私が取得する必要があり、その " .dropdown-arrow spanとそれ以上のものは、これはItem 3のものです。

これは可能ですか?もしそうなら、どうですか?彼らは親の兄弟ではありません事前

答えて

1

enter image description here

おかげで、彼らは両親の子です。

_this.closest('.menu_item').closest('.menu_item').find('.dropdown-arrow'); 

上記のコードは2つを返します。

+0

ありがとうございます!メニュー構造が定義されていないレベルの場合はどうなりますか? closest()の代わりにparents()を使用できますか? – user1991185

+1

@ user1991185あなたは絶対に正しいです。ここで 'parents()'を使う必要があります。 –