检查是否有祖先有一个类使用jQuery

有没有什么办法在jQuery检查是否有任何父母,父母,曾祖父有一个类。

我有一个标记结构,让我在代码中做这样的事情:

$(elem).parent().parent().parent().parent().hasClass('left') 

但是,为了代码可读性,我想避免这种事情。 有没有办法说“任何父母/祖父母/曾祖父都有这个class级”?

我正在使用jQuery 1.7.2。

 if ($elem.parents('.left').length) { } 

元素祖先的筛选有很多种方法。

 if ($elem.closest('.parentClass').length /* > 0*/) {/*...*/} if ($elem.parents('.parentClass').length /* > 0*/) {/*...*/} if ($elem.parents().hasClass('parentClass')) {/*...*/} if ($('.parentClass').has($elem).length /* > 0*/) {/*...*/} if ($elem.is('.parentClass *')) {/*...*/} 

注意closest() 方法在检查select器时包含元素本身。

或者,如果您有一个与$elem匹配的唯一select器 ,例如#myElem ,则可以使用:

 if ($('.parentClass:has(#myElem)').length /* > 0*/) {/*...*/} if(document.querySelector('.parentClass #myElem')) {/*...*/} 

如果你想匹配一个元素,只要使用一个CSS规则

 .parentClass #myElem { /* CSS property set */ } 

您可以使用指定的.classselect器的parents方法,并检查它们是否与它们匹配:

 if ($elem.parents('.left').length != 0) { //someone has this class }