如果#box
没有包含current-map
类的div,那就做点什么。
我认为!
会起作用,但事实并非如此。
if (!$('#box').closest('.current-map')) {
//do something
}
答案 0 :(得分:4)
您可以检查结果选择的长度。如果是0
,则没有祖先.current-map
元素:
if($("#box").closest(".current-map").length) {
//.current-map is an ancestor
}
您的尝试不起作用,因为大多数jQuery方法都会返回jQuery实例,无论它是否包含任何DOM元素,并且总是会计算为true
。
答案 1 :(得分:1)
您应该使用:has()
选择器。转动逻辑。
if ( $('.current-map:has(#box)').length > 0 ) {
// do backflips
}
.closest()
因工作速度慢而臭名昭着。
答案 2 :(得分:0)
在if块中尝试.length
if ($('#box').closest('.current-map').length > 0) {
//do something
}