$(this).attr('id') gibt undefined error jquery für die .jeder
Ich habe Folgendes HTML:
<div class="bio" id="bio-1">Test 1</div>
<div class="bio" id="bio-2">Test 2</div>
und Jquery:
$(document).ready(function () {
var bio = $('.bio');
bio.each(function (){
var bioId = $(this).attr('id');
bioId.click(function() {
$(this).addClass('visible');
});
});
});
Aber ich erhalte eine Fehlermeldung in der Konsole sagen bioId " nicht definiert ist. Irgendwelche Gedanken?
http://jsfiddle.net/xm679zbe/
- Was auch immer Wert
bioId
hat, es ist definitiv nicht ein jQuery-Objekt, so kann man das auch nicht nennenclick
auf Sie. Ich denke, Sie wollen einfach nur$('.bio').click(function() { $(this).addClass('visible'); });
. Keine Notwendigkeit, es komplizierter zu machen als es ist. - "...Ich erhalte eine Fehlermeldung in der Konsole sagen bioId " nicht definiert ist...." Ich vermute, es ist Ihnen mitteilt, dass
bioId.click
ist nicht definiert, eher alsbioId
. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach dieser Zeile:
bioId
halten wird entweder ein string oderundefined
. Es wird nicht auf ein jQuery-Objekt.Wenn Ihr Ziel ist das hinzufügen von ein
visible
Klasse zu jedem.bio
element, wenn es angeklickt wird, dann:...obwohl (arbeiten aus dem Namen), wenn Sie nicht "sichtbar", um zu beginnen mit, wie könnte Sie auf Sie?
visible
- class " - styling (nur in einer anderen Farbe, aber es ist eine interessante Wahl für den Namen).Ich denke, dass Sie hinzufügen möchten, die die Klasse immer dann sichtbar, wenn Sie auf klicken ".bio", so dass Sie nicht haben, um zu schreiben wie ein komplizierter code. Einfach
Das problem ist, dass Sie anrufen
.click()
auf dieid
- Attribut, nicht das jQuery-Objekt.$(this).attr('id');
geben Sie die ID des Elements in der form einer Zeichenfolge, die können Sie einen Ereignis-listener hinzufügen.Set
bioId
auf das eigentliche Objekt in der iteration:Demo
Alternativ, Sie könnten entfernen Sie die Variablen insgesamt:
Demo
Da Sie die Iteration durch die Elemente enthält die Klasse
.bio
es gibt keine Notwendigkeit, Sie zu extrahieren Sie die id und die neue Klasse, Sie können es so machen:Hoffe, das funktioniert 🙂