Ich bin ziemlich neu zu jQuery und Javascript im Allgemeinen, und ich suche, nur die DOM-Elemente zurückzugeben, die eine Klasse definiert haben. Zum Beispiel:Wie erhalten Sie alle Abkömmlinge eines DOM-Elements, die eine Klasse definiert haben?
<div id="myObject">
<h2>hello world</h2>
<div class="foo">bar</div>
<div class="bar">foo</div>
<div></div><a href="http://google.com"></a>
</div>
Ich frage mich, ob es eine jQuery-Funktion oder ein cleverer Suchparameter existiere ich $(#myObject).find(...)
passieren kann, der zurückkehren würde nur .foo
und .bar
, da dies die einzigen zwei DOM-Elemente sind, die eine Klasse definiert. Verallgemeinern, wäre es auch möglich, nach dem Vorhandensein eines Attributs zu suchen?
Es scheint, dass ich dies mit einer komplexeren Reihe von Funktionsaufrufen tun, wie
var toReturn = [];
var descendants = $('#myObject').find('*');
$.map(descendants, function (element, index) {
if(element.getAttribute('class') != undefined){
toReturn.push(element);
}
});
Aber wenn es etwas einfacher ist, wäre es hilfreich, darüber zu wissen.
Zu beachten: Wenn eine Klasse vorher eine Klasse hat, aber es war entfernt mit 'removeClass() 'dann wird es ein leeres' class' Attribut haben, das wird immer noch übereinstimmen. Zum Beispiel können Sie dies auftreten, wenn Sie Ihren 'addClass' Aufruf mit' $ ('. Foo') voranstellen. RemoveClass ('foo'); '. –
Danke, @TravisJ, das war mir nicht bewusst. Du hast absolut recht. –
Wenn es wirklich notwendig ist, das zu handhaben, können Sie '.filter()' mit einer Funktion verwenden, die prüft, ob 'this.className! = ''' – Barmar