Ich habe eine Reihe von Objekten, wo ich div
im Wrapper versteckt, die alos hat eine <a>
Schaltfläche, die einen SlideDown-Effekt auf das versteckte Objekt schaltet. Doch angeklickt, wenn es öffnet sich nur die versteckte div in dem letzten Objekt, statt nur in ITS KindjQuery, Funktion innerhalb Funktion Ziele falsch div
Vereinfachtes HTML:
<div class="panel-compressed">
<div class="panel-header">
<div class="toggle-panel">
<a href="#" class="toggle-panel-btn">Open content</a>
</div>
</div>
<div class="panel-body">
<p>Content goes here</p>
</div>
</div>
<div class="panel-compressed">
<div class="panel-header">
<div class="toggle-panel">
<a href="#" class="toggle-panel-btn">Open content</a>
</div>
</div>
<div class="panel-body">
<p>Content goes here</p>
</div>
</div>
<div class="panel-compressed">
<div class="panel-header">
<div class="toggle-panel">
<a href="#" class="toggle-panel-btn">Open content</a>
</div>
</div>
<div class="panel-body"> <!-- THIS OPENS WHEN CLICKING ANY .toggle-panel-btn -->
<p>Content goes here</p>
</div>
</div>
JS:
var $panelToggle = $('.toggle-panel-btn'); //Toggle button
var $panelBody = $('.panel-body'); //Hidden content
var $panelCompressed = $('.panel-compressed') //Wrapper
function togglePanel(){
$this = $(this);
$this.find($panelBody).hide();
//Open .panel-body
function showPB() {
$this.find($panelBody).slideDown();
$this.find($panelToggle).one("click", hidePB);
$this.addClass('dropdown-open');
}
//close .panel-body
function hidePB() {
$this.find($panelBody).slideUp();
$this.find($panelToggle).one("click", showPB);
$this.removeClass('dropdown-open');
}
$this.find($panelToggle).click("click", showPB);
}
$panelCompressed.each(togglePanel);
Bei der Verwendung von 'find' wie' $ this.find ($ panelBody) 'die Wähler wie' this.find $ passieren (‘ .panel-body ') ' – Satpal
ist dies, weil die Variable außerhalb der Funktion ist? –
ist es, weil 'var $ panelBody = $ ('. Panel-body');' außerhalb der Funktion findet alle panelbodies, nicht nur die Sie suchen. Um Ihren Code zu verstecken, müssten Sie den $ panelBody durchlaufen und den Elternteil finden, der mit $ (this) übereinstimmt. – mplungjan