检查是否有任何祖先有使用jQuery的类

Check if any ancestor has a class using jQuery

本文关键字:jQuery 的类 祖先 是否 任何 检查      更新时间:2023-09-26

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

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

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

然而,为了代码的可读性,我想避免这种事情。有没有办法说"任何父母/祖父母/曾祖父母都有这门课"?

我使用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() 方法在检查选择器时包含元素本身。

或者,如果您有一个唯一选择器匹配$elem,例如#myElem,您可以使用:

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

如果你想匹配一个元素,依赖于它的任何祖先类,只是为了样式的目的,只需使用CSS规则:

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

您可以使用parents方法与指定的.class选择器并检查是否有任何匹配:

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