检查是否有祖先有一个类使用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 */ }
您可以使用指定的.class
select器的parents
方法,并检查它们是否与它们匹配:
if ($elem.parents('.left').length != 0) { //someone has this class }