jQuery hat keine hasAttribute
Methode, so gehe ich davon aus $ = docuument.querySelector
. (Hinweis: nicht document.querySelectorAll
; Sie denken also nur an ein einzelnes Element). Die Methode hasAttribute
verwendet einen einzelnen Parameter: den Namen des Attributs, nach dem Sie suchen. Um den Wert dieses Attributs zu überprüfen, müssen Sie getAttribute
verwenden und das dann vergleichen. So könnten Sie tun:
if($('.classname').getAttribute('aria-expanded') === 'true') {}
Wenn Sie jQuery verwenden, dann können Sie nur die attr
Methode verwenden:
if ($('.classname').attr('aria-expanded') === 'true') {}
Siehe auch die MDN docs for hasAttribute
.
Wenn Sie versuchen, eine Reihe von Elementen zu überprüfen, könnten Sie so etwas tun:
function allHaveAttribute(elements, attrName, attrValue) {
// First, check that all elements have the attribute
for (var i = 0; i < elements.length; i++) {
if (!elements[i].hasAttribute(attrName)) return false;
}
if (attrValue) { // if we're checking their value...
for (var i = 0; i < elements.length; i++) {
if (elements[i].getAttribute(attrName) !== attrValue)
return false;
}
return true;
} else { // we know all elements have the attribute
return true;
}
}
var els = document.querySelectorAll('.classname');
if (allHaveAttribute(els, 'aria-expanded', 'true') {
// action here
}
JSBin Beispiel: http://jsbin.com/payaqijeqa/edit?js,console
Sie prüfen möchten, ob es wahr ist, für _alle_ dieses Satzes? – Alnitak
Es seine jQuery? Denn wenn es so ist, dann ist es falsch. jQuery hat keine solche Methode: https://api.jquery.com/?s=hasAttribute. –
Mögliches Duplikat von [jQuery hasAttr überprüft, ob auf einem Element ein Attribut vorhanden ist] (http://stackoverflow.com/questions/1318076/jquery-hasattr-checking-to-see-if-there-is-an- attribute-on-an-element) – SarathChandra