2010-12-17 8 views
0

Dies sollte wirklich einfach sein, aber ich kann nicht herausfinden, was zu tun ist. Ich versuche herauszufinden, ob eine angeklickte Sektion in einem jQuery Akkordeon eine Klasse hat. Wenn dies der Fall ist, müssen wir eine Funktion ausführen. Bisher habe ich gefunden habe, dass ich den Inhalt Abschnitt zur Verwendung des folgenden in der Änderungsfunktion gehandelt untersuchen werden:Zugreifen auf jQuery UI-Objekt von Akkordeon Wechselfunktion

console.log(ui.newContent); 

Blick in Firebug im Objekt, kann ich sehen, dass es ein 0-Index. Wenn Sie auf die 0 klicken, um sie in Firebug zu erweitern, wird eine der Objekteigenschaften als "get classList" aufgelistet. weder der folgenden Arbeit jedoch für den Zugriff auf diese:

console.log(ui.newContent[0].classList); 
console.log(ui.newContent[0].classList()); 

aber ich war in der Lage des Objekts id über diese zu bekommen:

console.log(ui.newContent[0].id); 

Also, aus Neugier, Wer weiß, wie die für den Zugriff auf classList, oder muss ich nur die ID als Selektor verwenden und das Objekt erneut holen, damit ich .hasClass verwenden kann? Scheint wie eine Verschwendung, aber es ist eine mögliche Abhilfe. Danke im Voraus!

+0

Update: Ich habe gefunden, ich könnte auch die ClassName-Zeichenfolge für den gleichen Effekt suchen. Ist diese Best Practice? Könnte effizienter sein als das Durchlaufen der Klassen, wenn ich überhaupt darauf zugreifen könnte ... –

Antwort

1

jQuery.hasClass() sollte für Sie arbeiten. In Ihrem Handler:

if(ui.newContent.hasClass('foo')) { 
    // do something 
} 
+0

Sie haben völlig Recht. Anscheinend habe ich nur versucht, .hasClass auf ui.newContent [0] zu verwenden. Do! –

+0

Einfacher Fehler zu machen. ui.newContent ist ein jQuery-Objekt, das den gerade ausgewählten Inhalt im Akkordeon enthält. Wenn Sie über ui.newContent [0] in ein jQuery-Objekt indizieren, gibt jQuery ein DOM-Objekt zurück, weshalb hasClass und andere jQuery-Methoden nicht mehr vorhanden sind. –