用户在HTML页面中选择两个或多个元素。我要完成的是找到那些元素的共同祖先(所以如果之前没有找到,则身体节点将是共同祖先)?
附注:这可以通过XPath来实现,但对我来说不是一个更好的选择。也可能会发现与CSS选择器解析,但我认为这是一个肮脏的方法(?)
谢谢。
最佳答案
尝试这个:
function get_common_ancestor(a, b)
{
$parentsa = $(a).parents();
$parentsb = $(b).parents();
var found = null;
$parentsa.each(function() {
var thisa = this;
$parentsb.each(function() {
if (thisa == this)
{
found = this;
return false;
}
});
if (found) return false;
});
return found;
}
像这样使用它:
var el = get_common_ancestor("#id_of_one_element", "#id_of_another_element");
这只是很快就解决了,但是应该可以。如果您想要一些稍有不同的内容(例如,返回jQuery对象而不是DOM元素,将DOM元素作为参数而不是ID等),则应该易于修改。