javascript-Selektoren
Wie macht man auswählen von DOM-Elementen in javascript?
Wie zum Beispiel:
<div class="des">
<h1>Test</h1>
<div class="desleft">
<p>Lorem Ipsum.</p>
</div>
<div class="Right">
<button>Test</button>
</div>
</div>
Nun, wie wähle ich h1
? Dies ist nur ein Teil einer größeren Seite, also nicht verwenden getElementsByTagName()
, da könnten andere ausgewählt werden. Auch da gibt es möglicherweise andere h1
's in das Dokument später, kann ich nicht befestigen Sie den index(Körper) oben.
Gibt es eine einfache Art und Weise zu wählen, sagen <h1>
tag, das ist unter den classname von desleft
?
Ich kann jQuery oder andere Bibliotheken.
- Es ist einfach nicht produktiv nicht zu verwenden irgendeine Art von Selektor-Bibliothek für moderne javascript-Programmierung. Wenn Sie nicht verwenden können, jQuery, dann zumindest nutzen Brutzeln, das ist nur eine Selektor-engine (und ist, was die Verwendung innerhalb von jQuery und YUI). Es ist Recht klein und sparen Sie Hunderte von Stunden der Entwicklung, verhindern, dass viele bugs und sparen Sie viel cross-browser-Probleme. Es ist einfach nicht produktiv, das Rad neu zu erfinden sich selbst.
- Ja, ich Stimme absolut. Ich hatte das Gefühl, es gab Möglichkeiten, es zu tun, und ich wollte nicht von Ihnen wissen.
- In diesen Selektor Bibliotheken, würden Sie nur verwenden Sie den selector:
".des h1"
Zugriff auf die<h1>
Objekt in deinem Beispiel. In Brutzeln, es würde einfach sein:var list = Sizzle(".des h1");
. - Sie wahrscheinlich nicht brauchen Sie eine Bibliothek an: caniuse.com/#search=querySelector
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wäre eine Funktion, die Sie beginnen können mit, und dann können Sie filter für die DOMElements, dass die Klasse.
Den
.indexOf
Funktion gibt-1
wenn die Nadel nicht im Heuhaufen.Jetzt re-Lektüre Ihrer Frage, warum nicht nur geben Sie Ihrem h1 id ' s???
DOM-traversal ist ein javascript, eklatante Probleme auf (enter jQuery).
einem einfachen
getElementById()
würde sparen Sie Kopfschmerzen, und ids, die auf alle Ihre h1-s wäre viel sauberer am Ende als zu versuchen, formulieren Sie einen Algorithmus, wählen Sie Sie durch andere Mittel.Können Sie diese verwenden, um auf Ihre H1:
w3.org hat Selektoren jetzt (http://www.w3.org/TR/selectors-api/#examples). Hier sind 2 verschiedene Arten, arbeitete für mich auf Chrome. Sie verwenden möchten, können querySelectorAll-Funktion, die eine Liste zurückgibt.
Verwenden querySelectorAll
Können Sie
querySelectorAll
:Diese zurück NodeList.
oder
Verwenden
querySelector
, um das erste element gefunden:Häufig verwendet, mit einem id-Selektor
#single-header-id
.Hier ist eine demo
Wenn du meinst, wählen Sie ein
h1
ist vor die ersten element der Klassedesleft
könnten Sie dies jederzeit tun:Beispiel: http://jsfiddle.net/Xeon06/ZMJJk/
previousSibling
muss zweimal aufgerufen werden, da der leere text-Knoten zwischen den beiden. Deshalb ist die Verwendung von Bibliotheken zu tun, dieses Zeug ist wirklich der beste Weg zu gehen.getElementsByClassName
wird nur unterstützt, > firefox 3