jQuery Nachkommen auswählen, einschließlich der übergeordneten

Betrachten Sie den folgenden HTML-Code:

<div class="foo" id="obj">
   I should be changed red
   <div class="bar" style="color:black;">
      I should not be changed red.
      <div class="foo">I should be changed red.</div>
   </div>
</div>

Gegeben ein DOM-Elementobj und ein Ausdruck, wie gehe ich vor, um Kinder auszuwählen und möglicherweiseobj? Ich suche nach etwas ähnlichem wie "Nachkommen auswählen", aber auch nach dem übergeordneten Element, wenn es mit dem Ausdruck übereinstimmt.

var obj = $("#obj")[0];

//wrong, may include siblings of 'obj'
$(".foo", $(obj).parent()).css("color", "red");

//wrong -- excludes 'obj'
$(".foo", obj).css("color", "red");

//correct way, but it's annoying
var matches = $(".foo", obj);
if ($(obj).is(".foo")) matches = matches.add(obj);
matches.css("color", "red");

Gibt es eine elegantere Lösung dafür?

Antworten auf die Frage(16)

Ihre Antwort auf die Frage