crm*_*cco 140 html javascript jquery jquery-selectors jquery-1.7
有没有办法在jQuery中检查是否有父,祖父,曾祖父有一个类.
我有一个标记结构让我在代码中做了这样的事情:
$(elem).parent().parent().parent().parent().hasClass('left')
Run Code Online (Sandbox Code Playgroud)
但是,为了代码可读性,我想避免这种事情.有没有办法说"任何父母/祖父母/曾祖父母都有这门课程"?
我正在使用jQuery 1.7.2.
Ale*_*lex 279
if ($elem.parents('.left').length) {
}
Run Code Online (Sandbox Code Playgroud)
A. *_*lff 73
有许多方法可以过滤元素祖先.
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 *')) {/*...*/}
Run Code Online (Sandbox Code Playgroud)
注意,closest() 方法在检查选择器时包含元素本身.
或者,如果您有一个与之匹配的唯一选择器$elem,例如#myElem,您可以使用:
if ($('.parentClass:has(#myElem)').length /* > 0*/) {/*...*/}
if(document.querySelector('.parentClass #myElem')) {/*...*/}
Run Code Online (Sandbox Code Playgroud)
如果您想根据其任何祖先类匹配元素仅用于样式目的,只需使用CSS规则:
.parentClass #myElem { /* CSS property set */ }
Run Code Online (Sandbox Code Playgroud)
您可以使用parents带有指定.class选择器的方法并检查它们是否与它匹配:
if ($elem.parents('.left').length != 0) {
//someone has this class
}
Run Code Online (Sandbox Code Playgroud)