我正在尝试找到包含类的最近元素....这是为了找到我当前元素的“堂兄”。 以下不起作用:
$('myelement').closest ('*:has(.class1)').find('class_cousin')
我在*
中使用closest
,因为我不确定我要查找的是哪个类型元素,也不知道它是否有任何类或ID(我试图保留它一般用于插件)
任何想法我怎么能这样做? 谢谢
答案 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');
以上回答只给出了表兄弟。