【发布时间】:2010-09-26 18:14:02
【问题描述】:
考虑以下 HTML:
<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>
给定一个 DOM 元素 obj 和一个表达式,我该如何选择任何子元素以及可能的 obj?我正在寻找类似于“选择后代”的内容,但如果它与表达式匹配,也包括父代。
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");
有没有更优雅的解决方案?
【问题讨论】:
-
+1:好问题。今天刚好碰到这种情况。已采纳 Andrew 的回答和您的评论,并添加了一个简单的 jQuery
findAndSelf扩展,正如您建议的那样供大家使用。干杯。
标签: jquery jquery-selectors parent descendant