Javascript 单击指定类以外的任意位置

Javascript 单击指定类以外的任意位置,javascript,jquery,Javascript,Jquery,如果在.m1wrapdiv以外的任何位置单击,我需要显示警报 为什么这不起作用?即使单击.m1wrap $(document).on("click", function(e) { if (e.target.class !== "m1wrap") { alert ("323"); }; }) 在e.target中没有属性class(它返回undefined),您可以使用属性e.target.className(注意它返回class属性中的所有类),但是在jQuer

如果在
.m1wrap
div以外的任何位置单击,我需要显示警报

为什么这不起作用?即使单击
.m1wrap

$(document).on("click", function(e) {
    if (e.target.class !== "m1wrap") {
        alert ("323");
    };
})

e.target
中没有属性
class
(它返回
undefined
),您可以使用属性
e.target.className
(注意它返回
class
属性中的所有类),但是在
jQuery
中有方法

您还可以与
.contains
方法
e.target.classList.contains('m1wrap')一起使用

$(文档).on('click',函数(e){
if(!$(e.target).hasClass('m1wrap')){
console.log('notm1wrap');
}
});

m1wrap

test

e.target
中没有
class
,只有
className
可用

代码片段:

$(document).on("click", function (e) {
    if (e.target.className !== "m1wrap") {
        alert("323");
    };
})
但是如果一个元素有多个类名,下面的代码片段是最好的方法

$(document).on("click", function (e) {
    if (!$(e.target).hasClass('m1wrap')) {
        alert("323");
    };
})
您需要使用来处理
属性

所以要么使用jQuery,要么使用vanilla JS

注意:这个使用
className
的示例仅检查类是否不等于“m1wrap”,而不是不包含“m1wrap”

$(文档)。在(“单击”)上,函数(e){
如果(e.target.className!=“m1wrap”){
警报(“323”);
};
})

m0wrap
m1wrap
m2wrap
返回,它没有类属性

因此,您可以使用className属性或getAttribute()方法来获取元素的类名

如果您想使用jQuery API,可以使用方法

<div>
    <div class="m1wrap">
        Non Clickable area
    </div>
    Clickable area
    Clickable area
    Clickable areaClickable areaClickable
    Clickable areaClickable
    Clickable area
</div>

if(!$(e.target).hasClass('m1wrap')
@Tushar,如果异常div是
.m1wrap
及其所有子元素,pls?元素可以有多个classes@Tushar如果我在工作,请纠正我。这也适用于children元素。所以不要担心。@bonaca您可以使用
$(e.target).is('.m1wrap')
$(('body')).on('click',function(e) {
 if ($(e.target).hasClass('m1wrap')) {
        return false;
    }
  alert("hello");
})