Wie kann ich mit JQuery nach Elementen suchen, die unabhängig vom Attribut-Tag einen bestimmten Attributwert haben?
Mögen:
$("[*='myvalue']")
sollte finden
<a href="target.html" target="myvalue">...
<tr change="myvalue">...
Das erste wegen des Attributs "Ziel", das zweite wegen des Attributs "Ändern".
Gibt es eine bessere Lösung, als nur alle Attribute zu durchlaufen?
Sie können einen benutzerdefinierten Pseudo-Selektor verwenden, um nach den Attributen zu filtern.
Das Folgende ist ein jQuery-Weg.
$.expr[":"].attrFilter = function(elem, index, val){
var len = $(elem.attributes).filter(function () {
return this.value === val[3];
}).length;
if (len > 0) {
return elem;
}
};
$('body *:attrFilter("value")').hide();
Das $.expr[":"].attrFilter
ist ein Erweiterungsmechanismus für benutzerdefinierte Selektoren. Sie können auch einen Parameter übergeben.
Syntax :
$.expr[':'].selector = function(elem, index, match) {
}
elem
ist das aktuelle DOM-Element index
ist der Index von elem match
ist ein Array, das alle Informationen zum benutzerdefinierten Selektor enthält, wobei der übergebene Parameter am 3. Index liegt. ( Referenz 1 , Referenz 2 )
match[0]
- enthält den vollständigen Pseudo-Klassen-Selektoraufruf. In diesem Beispiel:attrFilter("value")
match[1]
- enthält nur den Selektornamen. In diesem BeispielattrFilter
match[2]
- gibt an, welche Art von Anführungszeichen gegebenenfalls im Parameterausdruck verwendet werden. dh einfach (') oder doppelt (“). In diesem Beispiel ist es leer.match[3]
- gibt uns die Parameter an, dh was in den Klammern enthalten ist. In diesem Beispiel `WertDieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen