Elemente nach Attribut auswählen

Lesezeit: 6 Minuten

Elemente nach Attribut auswahlen
Ciprian Grosu

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 prü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 zum Beispiel eine Sammlung aller Kontrollkästchen erhalten, die dieses Attribut haben, ohne eines nach dem anderen zu aktivieren? Ist das möglich?

  • Abgesehen davon ist ein ein leeres Tag, das keinen Inhalt enthalten soll. Vielleicht geht es Ihnen nicht darum, das Sehen zu validieren, da myatttr vorhanden ist …

    – ScottE

    8. Juli 09 um 11:46 Uhr

  • stackoverflow.com/questions/1318076/…

    – kulekci

    10. Oktober 10 um 8:51 Uhr

  • Wenn Sie bereits eine Sammlung haben und nur Elemente mit bestimmten Attributen herausfiltern möchten – tun Sie es einfach – $filtered = $collection.filter('[attribute_name]');

    – jave.web

    9. Juli 15 um 20:06 Uhr

Elemente nach Attribut auswahlen
Stefan Gehrig

if ($('#A').attr('myattr')) {
    // attribute exists
} else {
    // attribute does not exist
}

BEARBEITEN:

Die oben genannten fallen in die else-Zweig wann myattr existiert, ist aber ein leerer String oder “0”. Wenn das ein Problem ist, sollten Sie explizit testen undefined:

if ($('#A').attr('myattr') !== undefined) {
    // attribute exists
} else {
    // attribute does not exist
}

  • Keine tolle Antwort. “undefined” ist kein Schlüsselwort in Javascript. Sehen constc.blogspot.com/2008/07/…

    – mhenry1384

    4. April 11 um 22:51 Uhr

  • Du hast recht… Aber neu definieren undefined gilt als Grenzfall und der obige Vergleich funktioniert in 99 % aller Fälle.

    – Stefan Gehrig

    5. April 11 um 6:52 Uhr

  • Funktioniert nicht, wenn das Attribut eine leere Zeichenfolge enthält. Ein Beispiel ist myattr=”

    – mythischer Programmierer

    26. September 11 um 16:39 Uhr

  • @mhenry – dann würden Sie sich irren 🙂 Wenn Sie das Projekt für mich oder neben mir erstellen würden, würde ich Sie bitten, Ihren Fehler zu beheben. Wenn es ein Open-Source-Paket wäre, würde ich (zusammen mit vielen Benutzern) aufhören, es zu verwenden, weil es schlecht codiert ist. Wenn Sie es nicht geändert haben, würde schließlich jemand anderes eine Version ohne den Fehler forken, und die Leute würden stattdessen diese verwenden, und Sie würden Ihr eigenes Projekt verlieren, wie es schon oft passiert ist, wenn jemand ein Paket erstellt, mit dem eine gute Idee ist schlechte Umsetzung. In jedem Fall würde es Ihnen eine Lektion über Codierungspraktiken erteilen 🙂

    – Jimbo Jonny

    20. November 12 um 15:58 Uhr

  • if (typeof $(‘#A’).attr(‘myattr’) !== ‘undefined’)

    – James Westgate

    9. April 14 um 14:11 Uhr


Meinst du, kannst du sie auswählen? Wenn ja, dann ja:

$(":checkbox[myattr]")

  • Beachten Sie, dass es wahrscheinlich korrekter/zuverlässiger ist, wenn Sie auf Existenz testen (vermutlich in einer if-Anweisung zum Beispiel): if($(“:checkbox[myattr]”).Länge()>0)…

    – Rinogo

    15. August 11 um 21:18 Uhr

  • @rinogo: eigentlich brauchst du nur if($(“:checkbox[myattr]”).length). Das () nach length ist nicht erforderlich, ebenso wenig wie > 0, 0 wird in Gleichheitstests als falsch ausgewertet, die keine strikte Gleichheit (sowohl Wert als auch Typ) erfordern.

    – bmarti44

    23. August 11 um 17:27 Uhr

  • Es wirft js-Fehler, wenn Sie etwas wie :td versuchen[myattr]. Ich denke also, dass diese Funktion speziell auf Kontrollkästchen abzielte.

    – von Primzahlen getäuscht

    29. August 2012 um 14:48 Uhr

  • Der Doppelpunkt wählt Pseudoklassen aus, die durch das Typattr bestimmt werden. Um dasselbe auf tds anzuwenden, lassen Sie einfach den Doppelpunkt weg.

    – dhochee

    22. Dezember 12 um 5:51 Uhr

  • Oder wenn Sie sehen möchten, ob etwas kein Attribut hat, wie z. B. alle Links finden, die kein Attribut haben href Attribute. $("#myBox").find('a').filter(':not([href])')

    – Timbrown

    25. Juli 14 um 9:16 Uhr


1644070929 171 Elemente nach Attribut auswahlen
Jonathan Bergeron

Ich weiß, es ist lange her, dass die Frage gestellt wurde, aber ich fand die Überprüfung so klarer:

if ($("#A").is('[myattr]')) {
    // attribute exists
} else {
    // attribute does not exist
}

(Wie auf dieser Seite gefunden Hier)

Dokumentation über ist kann gefunden werden Hier

  • Laut W3C werden boolesche Attribute durch Vorhandensein oder Fehlen des Attributs definiert. jQuery stellt die Methode .attr() bereit, um Attributwerte zu manipulieren. Aber wie fügen wir ein Attribut ohne Wert hinzu? Die von Ihnen bereitgestellte Methode zum Testen des Vorhandenseins eines Attributs ist in der jQuery-Dokumentation (1.8.2) nicht beschrieben. Wissen Sie, wie man ein Attribut mit jQuery hinzufügt?

    – Chike

    1. März 13 um 16:53 Uhr


  • @chmike Um ein Attribut hinzuzufügen, würde ich es so machen: $(“#A”).prop(“myNewAttribute”, someValue); Sie können someValue einen beliebigen Wert Ihrer Wahl zuweisen: Zeichenfolge, Zahl, leere Zeichenfolge, wahr/falsch.

    – Jonathan Bergeron

    10. April 13 um 12:34 Uhr

  • Dadurch wird das Attribut mit einem zugewiesenen Wert hinzugefügt, der nicht mit einem Attribut ohne Wert identisch ist.

    – Chike

    11. April 13 um 13:18 Uhr

  • Ich stimme zu, dies ist die beste Antwort (mit jQuery) – sehr klar und prägnant. Ich habe mich gefragt, warum jQuery nicht nur eine hasAttribute () -Funktion hat, und die Antwort ist, dass natives Javascript bereits eine hat. Jedes HTML-DOM-Element hat eine Methode hasAttribute(‘attributeName’). Sie könnten also Folgendes tun: $(‘#A’)[0].hasAttribute(‘myattr’) @chmike – Ich glaube nicht, dass Sie mit jQuery-Funktionen ein leeres Attribut hinzufügen können, aber Sie können es mit dem HTML-Dom-Elementobjekt auf ähnliche Weise wie folgt tun: $(“#A”)[0].setAttributeNode(document.createAttribute(“myNewAttribute”));

    – Daniel Howard

    14. Mai 13 um 7:23 Uhr

  • Nur ein Kommentar, dass mir diese Antwort gefällt, aber ich war verwirrt über die Kommentare, in denen gefragt wurde, wie man ein Attribut ohne Wert hinzufügt. Diese beziehen sich nicht auf die Frage oder die Antwort.

    – Gutes Auge

    17. Februar 15 um 0:51 Uhr

Das wird funktionieren:

$('#A')[0].hasAttribute('myattr');

In JavaScript…

null == undefined

…kehrt zurück true*. Es ist der Unterschied zwischen == und ===. Auch der Name undefined kann definiert werden (es ist kein Schlüsselwort wie null ist), also sollten Sie besser auf andere Weise nachsehen. Der zuverlässigste Weg ist wahrscheinlich, den Rückgabewert der zu vergleichen typeof Operator.

typeof o == "undefined"

Trotzdem sollte der Vergleich mit null in diesem Fall funktionieren.

* Vorausgesetzt undefined ist eigentlich undefiniert.

  • Undefined ist kein reserviertes Schlüsselwort in JavaScript. In jQuery ist es möglich, seinen Namen zu ändern, weil er mit dem Konstruktor “var” konstruiert und nicht bewertet wird. Am oberen Rand des magischen Bibliothekscodes befindet sich tatsächlich eine Zeile mit der Aufschrift „var undefined;“. und auf diese Weise wird eine undefinierte Variable mit diesem Namen im jQuery-Bereich definiert … Aber sie könnte trotzdem “unbenannt” genannt werden, indem Sie “var unnamed;” eingeben.

    – Yodabar

    19. Januar 11 um 22:57 Uhr


  • Diese Suche nicht nach einem Attribut, diese Suche nach einer Eigenschaft in einem Javascript-Objekt, warum hat dies 6 Upvotes?

    – ncubica

    23. Juli 13 um 15:14 Uhr

1644070929 247 Elemente nach Attribut auswahlen
Cᴏʀʏ

$("input[attr]").length könnte eine bessere Option sein.

  • Undefined ist kein reserviertes Schlüsselwort in JavaScript. In jQuery ist es möglich, seinen Namen zu ändern, weil er mit dem Konstruktor “var” konstruiert und nicht bewertet wird. Am oberen Rand des magischen Bibliothekscodes befindet sich tatsächlich eine Zeile mit der Aufschrift „var undefined;“. und auf diese Weise wird eine undefinierte Variable mit diesem Namen im jQuery-Bereich definiert … Aber sie könnte trotzdem “unbenannt” genannt werden, indem Sie “var unnamed;” eingeben.

    – Yodabar

    19. Januar 11 um 22:57 Uhr


  • Diese Suche nicht nach einem Attribut, diese Suche nach einer Eigenschaft in einem Javascript-Objekt, warum hat dies 6 Upvotes?

    – ncubica

    23. Juli 13 um 15:14 Uhr

Elemente nach Attribut auswahlen
David

Ein paar Ideen wurden mit “typeof”, jQuery “.is” und “.filter” herumgeworfen, also dachte ich, ich würde einen schnellen Leistungsvergleich von ihnen posten. Der Typ von scheint dafür die beste Wahl zu sein. Während die anderen funktionieren, scheint es einen deutlichen Leistungsunterschied zu geben, wenn die jq-Bibliothek für diesen Versuch aufgerufen wird.

.

784160cookie-checkElemente nach Attribut auswählen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy