2016-05-09 12 views
-2

mir bitte mitteilen, ob ich hier richtig Syntax bin zu überprüfen, ob „aria-expanded“ für einen bestimmten Satz von Elementen mit CSS-Klasse „Klassennamen“ wahr ist:Wie für Attributwert überprüfen

if ($(‘.classname’).hasAttribute('aria-expanded','true')) {
 output here
} 
+0

Sie prüfen möchten, ob es wahr ist, für _alle_ dieses Satzes? – Alnitak

+0

Es seine jQuery? Denn wenn es so ist, dann ist es falsch. jQuery hat keine solche Methode: https://api.jquery.com/?s=hasAttribute. –

+0

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

Antwort

1

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

+0

Danke für Ihre Antwort @andrewburgess, ich habe Ihren Vorschlag wie folgt verwendet, aber immer noch nicht funktioniert, können Sie bitte noch einmal schauen: if ($ ('.Klassenname '). getAttribute (' aria-expanded ') ===' true ') {// hier ausgeben} Folgendes ist das Element, das ich auf Klick anwende. Nav

+0

@nav Was ist '$' in Ihrer Anwendung? –

+0

Es ist die js - Syntax, nicht sicher, ob ich bekomme, was Sie fragen – Nav

0
  1. jQuery hat keine .hasAttribute Funktion

  2. Wenn ja, wäre es höchstwahrscheinlich nur auf dem ersten des Satzes arbeiten

Im Folgenden wird natives JavaScript (ES5) verwendet, um zu überprüfen, ob das Element .every im Set document.querySelectorAll('.classname') dieses Attribut auf true festgelegt hat.

let allSet = [].every.call(document.querySelectorAll('.classname'), function(el) { 
    return el.getAttribute('aria-expanded') === 'true'; 
}); 

Hinweis: Bei dem obigen Test wird die Groß- und Kleinschreibung beachtet. Es ignoriert auch alle Elemente, die dieses Attribut überhaupt nicht haben. Wenn letzteres ist ein Thema:

let allSet = [].every.call(document.querySelectorAll('.classname'), function(el) { 
    return el.hasAttribute('aria-expanded') && el.getAttribute('aria-expanded') === 'true'; 
}); 
0

Sie können prüfen, ob jedes Element mit Klasse „classname "hat das Attribut" aria-expanded = 'true' "mit:

if($(".className").length === $(".className").filter("[aria-expanded='true']").length) { 
    //output here 
} 
0

CSS verfügt über Attributselektoren, die die Auswahl von Elementen mit bestimmten Attributen ermöglichen. Wenn Sie den Wähler negieren (die jQuery einzigartig ist), können Sie testen, ob es irgendwelche Elemente sind, die die Klasse haben, aber nicht über den Attributwert unter Verwendung:

$(".className[aria-expanded!='true']").length == 0 
Verwandte Themen