2016-04-18 17 views
1

Ich arbeite an einem kleinen System, das kollabierbare Blöcke verwendet - dafür habe ich eine CSS-Klasse, die abhängig von der jQuery-Abhängigkeit ein- oder ausschaltet.Warum funktioniert jQuery nicht am besten?

Der Code Ich verwende ist:

$("#click_me").on("click", function() { 
    $("#clicked_action").toggleClass("show"); 
}); 

Und das funktioniert, aber es ist nicht das, was benötigt wird. Was benötigt wird, ist:

$(".collapse-header").on("click", function() { 
    $(this).closest(".collapse-body").toggleClass("show"); 
}); 

Aber das funktioniert nicht.

Ich bin keine Konsole Fehler bekommen, so ist jede Hilfe

EDIT HTML-Wert apprecated:

<div class="collapse-header" id="click_me"> 
    <span class="float-left">Click me</span> 
    <span class="float-right"><span class="glyphicon glyphicon-plus"></span></span> 
    <hr class="hr" /> 
</div> 
<div class="collapse-body" id="clicked_action"> 
    I'm collapsed 
</div> 
+2

Wo ist die HTML-Struktur? – ps2goat

+0

Ich denke, Sie brauchen etwas wie '$ (this) .parent(). Find (". Collapse-body ")' –

+0

@ ps2goat, hinzugefügt die html –

Antwort

4

Sie suchen

$(this).parent().find(".collapse-body") 

Über .closest

$(element).closest(selector) ist das erste Element zu finden, das Selektor beim Überqueren der Vorfahren des Elements entspricht.

In Ihrem Fall sind Ihre Elemente auf der gleichen Ebene ("Geschwister"), so dass nicht funktioniert.

+1

'$ (this) .next (". Collapse-body ")' würde auch funktionieren – dave

Verwandte Themen