2017-03-15 1 views
2

Es gibt Dropdown-Gruppen für bestimmte Links. Dies ist der Teil von ihnen:Ändern der Klasse der Eltern mit jQuery

Wenn die li active-item class unter level-1 hat, dann versuche ich Eltern erben close-item mit open-item.

Dies ist Jquery-Code dafür.

$(document).ready(function() { 
 

 
    $('.active-item').parent('li').addClass('open-item').removeClass('close-item'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li class="has-child-item close-item"> 
 
    <a><i class="fa fa-cubes" aria-hidden="true"></i><span>İstasyon Ayarları</span></a> 
 
    <ul class="nav child-nav level-1"> 
 
    <li class="active-item"><a href="{{url('/istasyonlar')}}">İstasyon Listesi</a></li> 
 
    <li><a href="{{url('/istasyonlar/ekle')}}">Yeni İstasyon Tanımlama</a></li> 
 
    </ul> 
 
</li>

Aber es funktioniert nicht.

+0

'$ ('. Active-item'). Am nächsten (" li.close-item "). AddClass ('open-item'). RemoveClass ('close-item');' probiere dieses – guradio

Antwort

3

.active-Artikel ist nicht ein Elternteil li es die Li, Sie wollen:

.closest("li.close-item") 
+0

danke, ich ' ll akzeptieren – yigitozmen

+0

Mein Vergnügen. Viel Glück – mayersdesign

0

Die Eltern von .active-Artikel ist ein UL kein LI. Die LI, nach der Sie suchen, ist das Elternteil dieses Elternteils.

1

Verwendung closest()

am nächsten() wählt das erste Element, das den Wähler übereinstimmt, auf von der DOM-Baum.

FYI parent()

parent() wählt ein Element, bis der DOM-Baum.

Lösung

$(document).ready(function() { 
 
    $('.active-item').closest('li.has-child-item').toggleClass('open-item close-item'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li class="has-child-item close-item"> 
 
    <a><i class="fa fa-cubes" aria-hidden="true"></i><span>İstasyon Ayarları</span></a> 
 
    <ul class="nav child-nav level-1"> 
 
    <li class="active-item"><a href="{{url('/istasyonlar')}}">İstasyon Listesi</a></li> 
 
    <li><a href="{{url('/istasyonlar/ekle')}}">Yeni İstasyon Tanımlama</a></li> 
 
    </ul> 
 
</li>

1

Vielleicht versuchen:

$('.active-item').parents().closest('li').addClass('open-item').removeClass('close-item'); 

es wird die nächste li verändern

Verwandte Themen