用户在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等),则应该易于修改。

09-25 17:04
查看更多