jquery - 当对象没有类时如何不触发事件

时间:2013-02-15 15:17:47

标签: jquery html css

我想做这个条件:

 if ( this div has NO class firing on) {

      // do nothing when click on it

   } // else do something

有可能吗?

我倾向于这样做,因为它限制了与其他学生团队合作的编码。但是,对于我的问题,如果它令人困惑和不清楚,那就很抱歉。

5 个答案:

答案 0 :(得分:3)

我不确定我是否正确地解释了你的问题,但我相信只有当事件被触发的元素具有某个类时才会执行某个回调。在这种情况下,您可以在回调中执行以下操作:

$("#someId").on("click", function () {
   if (!$(this).hasClass("someClass"))
      return false;

   // Do your stuff here, if we get here, the element has the desired class
});

使用此解决方案,您将捕获该事件,但如果该元素没有您感兴趣的类,则您将不会做任何事情并提前转义回调。

<强>更新

如果你不是特别想要任何课程,只是想确保它没有任何课程,那么你可以这样做:

$("#someId").on("click", function () {
    if ($(this).prop("class").length === 0)
        return false;

    // Do your stuff here, if we get here, the element has no class
});

答案 1 :(得分:2)

你可以委托并检查元素是否有一个类(不是空类) - 现在它只会在div有一个类时触发

$('parentelement').on('click','div:not([class=""])[class]',function(){

});

答案 2 :(得分:1)

你正在以错误的方式做这件事。 将类添加到div,您想要操作,然后您可以使用selector或hasClass。

答案 3 :(得分:1)

这是一个非常模糊的问题描述,这是一个非常普遍的答案:

$('div').each(function() {
    if (!this.hasAttribute('class')) { //has no class
        $(this).off(); //requires the use of on(), but removes all event handlers
    }
    $(this).on('click', ...)
});

答案 4 :(得分:1)

我不明白你的问题。但我认为你想要这样的东西。

if($(this).hasClass('anyClass')){
//do nothing
return false;
}else{
//Do something
}

注意:您正试图以错误的方式完成它。试着找出一些替代方法。