Ich habe eine Liste wie diese
%Vor% Ich möchte alle Elemente finden, die ein bestimmtes data-pk-type
enthalten. Ich versuche den folgenden fehlgeschlagenen Code, weil .data("pkType", "foo")
das Datenattribut tatsächlich auf foo
;
Ich könnte etwas wie
machen %Vor% aber das würde nicht so gut funktionieren ... Ich möchte jedes Element, das foo
enthalten könnte. Vorschläge?
Sie sollten jQuerys Attribute Contains Selector [name*="value"]
verwenden.
Attribut enthält Selektor [Name *="Wert"] : Wählt Elemente aus, die das angegebene Attribut mit einem Wert enthalten, der den angegebenen Teilstring enthält
Sehen Sie sich das Beispiel und die jSFiddle Demonstration
angibt Ihnen eine 3, also wurden 3 Elemente gefunden.
Ich habe zuvor eine sehr ähnliche Frage beantwortet: jQuery 1.4.4: Wie finde ich ein Element basierend auf seinem Datenattributwert? . (Ich nehme an, du hast es vielleicht schon gesehen, seit ich heute nachmittag einen Kommentar dazu bekommen habe.)
Grundsätzlich denke ich, dass Sie hier das falsche Werkzeug verwenden. data-
Attribute sollten zum Speichern von Daten verwendet werden, die nicht logisch in die normalen Attribute passen. In diesem Fall werden Ihre data-id
und data-pk-type
logisch dem normalen Attribut id
und dem normalen Attribut class
zugeordnet. Dies ist insbesondere der Fall, weil Sie einen Satz von durch Leerzeichen getrennten "Typen" finden möchten - genau die gleiche Implementierung wie Klassen.
Mit normalen Attributen werden Ihre Elemente viel einfacher und schneller zu finden.
%Vor% Beachten Sie, dass ich die Klassen mit pk-
"namespaced" habe. Dies ist möglicherweise nicht notwendig, je nachdem wie vielfältig und zahlreich sie sind.
Sie können dann die Elemente mit einem normalen Selektor finden:
%Vor%Tags und Links javascript html jquery