jquery表兄弟元素

时间:2010-04-20 21:59:43

标签: jquery

我正在尝试找到包含类的最近元素....这是为了找到我当前元素的“堂兄”。 以下不起作用:

$('myelement').closest ('*:has(.class1)').find('class_cousin')

我在*中使用closest,因为我不确定我要查找的是哪个类型元素,也不知道它是否有任何类或ID(我试图保留它一般用于插件)

任何想法我怎么能这样做? 谢谢

2 个答案:

答案 0 :(得分:8)

我觉得你很亲密。这样的事情应该有效:

$('myelement').closest(':has(.yourClass)').find('.yourClass')

我认为关键在于您正在寻找具有您正在寻找的特定类的最近父级,然后想要找到该特定对象。

当然,上面的问题是它不一定能找到.yourClass的一个实例。您可以拥有一个包含多个表兄弟对象的父对象。我也不确定上面的查询有多昂贵。可能存在性能问题。

答案 1 :(得分:0)

我是stackoverflow的新手,我不确定我能否,但我根据自己的需要编辑了@robjb的答案,并在此处发布,万一它可以帮助其他人。完全归功于他。

如果有人想要只选择特定的堂兄弟而不是所有表兄弟(即想要使用选择器),那么我们可以使用以下功能。如果 selector 没有作为参数传递,那么它将给所有表兄弟。

(function($) {
$.fn.cousins = function(selector) {
    var cousins;
    this.each(function() {
        var auntsAndUncles = $(this).parent().siblings();
        auntsAndUncles.each(function() {
            if(cousins == null) {
                if(selector)
                    cousins = auntsAndUncles.children(selector);
                else
                    cousins = auntsAndUncles.children();
            }
            else {
                if(selector)
                    cousins.add( auntsAndUncles.children(selector) );
                else
                    cousins.add( auntsAndUncles.children() );
            }
        });
    });
    return cousins;
    }
})(jQuery)

上述功能的使用示例如

$(clickedObj).cousins('.singleWheel');

以上回答只给出了表兄弟。