<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
Warum funktioniert das oben nicht und wie soll ich das machen?
jquery
jquery-selectors
Angst vor einem Hackplaneten
quelle
quelle
Antworten:
Der jQuery-Weg:
In Ihrem Beispiel:
Oder durch das DOM:
oder auch :
und Grund für die Verwendung von
$('#test').get(0)
in JQuery oder sogar$('#test')[0]
ist, dass$('#test')
es sich um einen JQuery-Selektor handelt, der ein Array () von Ergebnissen zurückgibt, das standardmäßig kein einzelnes Element istEine Alternative für den DOM-Selektor in jquery ist
das unterscheidet sich von
.attr()
und$('#test').prop('foo')
packt den angegebenen DOM -foo
Eigenschaft, während$('#test').attr('foo')
Zupacken das angegebene HTML -foo
Attribut und Sie genauere Informationen über Unterschiede finden sich hier .quelle
$('#test').id()
.$('selector').attr('id')
gibt die ID des ersten übereinstimmenden Elements zurück. Referenz .Wenn Ihre übereinstimmende Menge mehr als ein Element enthält, können Sie mit dem herkömmlichen
.each
Iterator ein Array zurückgeben, das jede der IDs enthält:Wenn Sie bereit sind, etwas grobkörniger zu werden, können Sie den Wrapper vermeiden und die
.map
Verknüpfung verwenden .quelle
retval.push($(this).attr('id'))
kann geschrieben werdenretval.push(this.id)
return $('.selector').map(function(i, dom){ return $(dom).attr('data-id'); })
id
ist eine Eigenschaft eines HTMLElement
. Beim Schreiben$("#something")
wird jedoch ein jQuery-Objekt zurückgegeben, das die übereinstimmenden DOM-Elemente umschließt. Rufen Sie auf, um das erste übereinstimmende DOM-Element zurückzugewinnenget(0)
In diesem nativen Element können Sie id oder eine andere native DOM-Eigenschaft oder -Funktion aufrufen.
Das ist der Grund, warum
id
in Ihrem Code nicht funktioniert.Verwenden Sie alternativ die
attr
Methode von jQuery, wie andere Antworten vorschlagen, um dasid
Attribut des ersten übereinstimmenden Elements abzurufen.quelle
Die obigen Antworten sind großartig, aber wenn sich jquery weiterentwickelt, können Sie auch Folgendes tun:
quelle
attr()
wurde in 1.0 undprop()
in 1.6 hinzugefügt, daher gehe ich davon aus, dass Ihr Kommentarprop()
der neue Weg ist.attr
) oder möglicherweise durch script (prop
) geändert wird . Wenn Sie dasid
Attribut eines Elements nicht mithilfe eines clientseitigen Skripts ändern, sindprop
undattr
identisch.Einige Überprüfungscodes sind natürlich erforderlich, aber einfach zu implementieren!
quelle
.id
ist keine gültige Abfragefunktion. Sie müssen die.attr()
Funktion verwenden, um auf Attribute zuzugreifen, die ein Element besitzt. Sie können.attr()
sowohl einen Attributwert durch Angabe von zwei Parametern ändern als auch den Wert durch Angabe eines Parameters abrufen.http://api.jquery.com/attr/
quelle
Wenn Sie eine ID eines Elements erhalten möchten, z. B. durch eine Klassenauswahl, wenn ein Ereignis (in diesem Fall ein Klickereignis) für dieses bestimmte Element ausgelöst wurde, wird Folgendes ausgeführt:
quelle
$('#test').attr('id')
In Ihrem Beispiel:quelle
Nun, anscheinend gab es keine Lösung und ich möchte meine eigene Lösung vorschlagen, die eine Erweiterung des JQuery-Prototyps ist. Ich habe dies in eine Hilfsdatei eingefügt, die nach der JQuery-Bibliothek geladen wird, daher die Prüfung auf
window.jQuery
Es mag nicht perfekt sein, aber es ist ein Anfang, um vielleicht in die JQuery-Bibliothek aufgenommen zu werden.
Gibt entweder einen einzelnen Zeichenfolgenwert oder ein Array von Zeichenfolgenwerten zurück. Das Array der Zeichenfolgenwerte ist für den Fall, dass ein Selektor mit mehreren Elementen verwendet wurde.
quelle
$('#test')
Gibt ein jQuery-Objekt zurück, sodass Sie es nicht einfachobject.id
zum Abrufen verwenden könnenId
Sie müssen verwenden
$('#test').attr('id')
, was Ihre Anforderungen anID
das Element zurückgibtDies kann auch wie folgt erfolgen:
$('#test').get(0).id
das ist gleichdocument.getElementById('test').id
quelle
$('#test')[0].id
das ist das gleiche wie.get(0)
Vielleicht nützlich für andere, die diesen Thread finden. Der folgende Code funktioniert nur, wenn Sie jQuery bereits verwenden. Die Funktion gibt immer einen Bezeichner zurück. Wenn das Element keinen Bezeichner hat, generiert die Funktion den Bezeichner und hängt diesen an das Element an.
Wie benutzt man:
quelle
Mit dem obigen Code können Sie eine ID erhalten.
quelle
Dies ist eine alte Frage, aber ab 2015 könnte dies tatsächlich funktionieren:
Und Sie können auch Aufgaben vornehmen:
Solange Sie das folgende JQuery-Plugin definieren:
Interessanterweise, wenn
element
es sich um ein DOM-Element handelt, dann:quelle
Da die ID ein Attribut ist, können Sie sie mithilfe der
attr
Methode abrufen.quelle
Dies kann eine Element-ID, eine Klasse oder die automatische Verwendung von Even sein
quelle
Wichtig: Wenn Sie ein neues Objekt mit jQuery und Bindung ein Ereignis erstellen, können Sie MÜSSEN verwenden Stütze und nicht attr , wie folgt aus :
$("<div/>",{ id: "yourId", class: "yourClass", html: "<span></span>" }).on("click", function(e) { alert($(this).prop("id")); }).appendTo("#something");
quelle
Dies wird endlich Ihre Probleme lösen:
Angenommen, Sie haben viele Schaltflächen auf einer Seite und möchten eine davon je nach ID mit jQuery Ajax (oder nicht Ajax) ändern.
Angenommen, Sie haben viele verschiedene Arten von Schaltflächen (für Formulare, zur Genehmigung und für ähnliche Zwecke), und Sie möchten, dass die jQuery nur die Schaltflächen "Gefällt mir" behandelt.
Hier ist ein Code, der funktioniert: Die jQuery behandelt nur die Schaltflächen der Klasse .cls-hlpb. Sie nimmt die ID der Schaltfläche, auf die geklickt wurde, und ändert sie entsprechend den Daten, die vom Ajax stammen.
Code wurde aus w3schools genommen und geändert.
quelle
quelle
Es beantwortet das OP nicht, kann aber für andere interessant sein:
.id
In diesem Fall können Sie auf das Feld zugreifen :quelle