Ich habe eine Sammlung von Kontrollkästchen mit generierten IDs und einige von ihnen haben ein zusätzliches Attribut. Ist es möglich, mit JQuery zu überprüfen, ob ein Element ein bestimmtes Attribut hat? Kann ich beispielsweise überprüfen, ob das folgende Element das Attribut "myattr" hat? Der Wert des Attributs kann variieren.
<input type="checkbox" id="A" myattr="val_attr">A</input>
Wie kann ich beispielsweise eine Sammlung aller Kontrollkästchen mit diesem Attribut abrufen, ohne sie einzeln zu aktivieren? Ist das möglich?
jquery
attributes
Ciprian Grosu
quelle
quelle
$filtered = $collection.filter('[attribute_name]');
Antworten:
Meinst du, kannst du sie auswählen? Wenn ja, dann ja:
quelle
href
Attribute haben.$("#myBox").find('a').filter(':not([href])')
BEARBEITEN:
Das Obige fällt in die
else
-zweig, wenn esmyattr
existiert, ist aber eine leere Zeichenkette oder "0". Wenn dies ein Problem ist, sollten Sie explizit Folgendes testenundefined
:quelle
undefined
wird als Randfall angesehen, und der obige Vergleich funktioniert in 99% aller Fälle.Ich weiß, dass die Frage schon lange nicht mehr gestellt wurde, aber ich fand den Scheck so klarer:
(Wie auf dieser Seite hier zu finden )
Dokumentation zu is finden Sie hier
quelle
Das wird funktionieren:
quelle
$(this).<something>
wenn Sie ihnthis.hasAttribute('...')
direkt ausführen können (und sich natürlich nicht um ältere Browser kümmern).In JavaScript ...
... gibt
true
* zurück. Es ist der Unterschied zwischen==
und===
. Außerdem kann der Nameundefined
definiert werden (es ist kein Schlüsselwort wie esnull
ist), sodass Sie besser auf eine andere Weise prüfen sollten. Der zuverlässigste Weg ist wahrscheinlich, den Rückgabewert destypeof
Bedieners zu vergleichen .Der Vergleich mit null sollte in diesem Fall jedoch funktionieren.
* Angenommen, es
undefined
ist tatsächlich undefiniert.quelle
$("input[attr]").length
könnte eine bessere Option sein.quelle
Ein paar Ideen wurden mit "typeof", jQuery ".is" und ".filter" herumgeschleudert, also dachte ich, ich würde einen schnellen Perf-Vergleich von ihnen veröffentlichen. Der Typ scheint hierfür die beste Wahl zu sein. Während die anderen funktionieren, scheint es einen deutlichen Leistungsunterschied zu geben, wenn die jq-Bibliothek für diese Bemühungen aufgerufen wird.
quelle
quelle
isset()
oder zum Beispiel in js$("#element").attr('my_attr') === false
,Wie in diesem Beitrag können Sie mit
.is
und der Attributauswahl[]
einfach eine Funktion (oder einen Prototyp) hinzufügen:quelle
quelle
einfach:
Weitere Infos: offizielle Dokumente
quelle
Darüber hinaus alle Elemente mit einem Attribut für die Auswahl
$('[someAttribute]')
oder$('input[someAttribute]')
Sie können auch eine Funktion zu tun boolean Kontrollen auf ein Objekt wie in einem Klick - Handler verwenden:if(! this.hasAttribute('myattr') ) { ...
quelle
Ich habe ein npm-Paket mit dem beabsichtigten Verhalten wie oben beschrieben erstellt.
Link zu [npm] und [github]
Die Verwendung ist sehr einfach. Beispielsweise:
gibt true zurück.
Funktioniert auch mit Kamelkoffer.
quelle
Informationen zum Auswählen von Elementen mit einem bestimmten Attribut finden Sie in den obigen Antworten.
Um festzustellen, ob ein bestimmtes jQuery-Element ein bestimmtes Attribut hat, verwende ich ein kleines Plugin, das zurückgibt,
true
wenn das erste Element in der ajQuery-Auflistung dieses Attribut hat:quelle
JQuery gibt das Attribut als Zeichenfolge zurück. Daher können Sie die Länge dieser Zeichenfolge überprüfen, um festzustellen, ob sie festgelegt ist:
quelle