Ich versuche, den Attributwert aus dem nächsten Element mit der angegebenen Klasse zu greifen, aber immer wieder undefined zurück.Jquery - Erhalten Attributwert der nächsten Klasse
Unten ist mein HTML und mein Code, ich bin mir nicht sicher, was falsch läuft, um undefined zurück zu kommen.
HTML
<body>
<form action="/update" id="formwrite">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel">
<div class="panel-heading" role="tab" id="headingOne">
<h4 class="panel-title va-middle">Account Settings
<img src='../images/colopen.svg' data-swap='../images/coll.svg' class="panel-icon collapse-icon" role="button" data-toggle="collapse" data-parent="#accordion" href="#collaspeOne" aria-expanded="true" aria-controls="collaspeOne">
</h4>
</div>
<div id="collaspeOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-default">
<div class="row fieldpos">
<fieldset class="form-group textwide">
<label for="email">Email</label>
<input type="email" class="form-control" id="email" placeholder="Enter Email" required>
</fieldset>
</div>
</div>
</div>
</div>
<div class="panel">
<div class="panel-heading" role="tab" id="headingTwo">
<h4 class="panel-title va-middle">Other Settings
<img src='../images/colopen.svg' data-swap='../images/coll.svg' class="panel-icon collapse-icon" role="button" data-toggle="collapse" data-parent="#accordion" href="#collaspeTwo" aria-expanded="true" aria-controls="collaspeTwo">
</h4>
</div>
<div id="collaspeTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
<div class="panel-default">
<div class="row fieldpos">
<fieldset class="form-group textwide">
<label for="group">Test</label>
<input type="text" class="form-control " id="group" placeholder="test" required>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<button type="submit" class="btn btn-success form-control savechanges">Save Changes</button>
<button class="btn btn-success form-control test">Call Function</button>
</form>
</body>
JS
$(document).on("click", ".test", function(){
$("input[required]").each(function(){
var inputval = $(this).val();
var collaspe = $(this).closest(".collapse-icon").attr("aria-expanded");
console.log(collaspe);
if(!inputval){
console.log("Required Empty");
$(".collapse-icon").trigger("click");
} else {
console.log("Required has value");;
}
});
});
Irgendwelche Vorschläge?
EDIT: JSFiddle
wo ist dein HTML? –
am nächsten verläuft das DOM (über Eltern), aber Ihre Eingabeelemente haben keine übergeordnete Elemente mit der Klasse "Kollaps-Symbol" - diese scheinen in Geschwister der Eltern zu sein. Sie müssen wahrscheinlich zum übergeordneten "Kollaps" gehen, dann zu seinem vorherigen Geschwister und dann von dort zum Kollaps-Symbol. –
Kurzer Hinweis zu Ihrem HTML: Ihr zweites Kollapsepanel ist nicht Teil der '.panel-group [role = 'tablist']' was bedeutet, dass das zweite Panel gleichzeitig mit dem ersten Panel geöffnet werden kann. Wenn das die Absicht ist, dann ist mein Kommentar sinnlos; Wenn Sie jedoch eine Akkordeon-Panel-Gruppe wollen, dann muss das zweite Panel geschachtelt werden :) – Bwolfing