javascript – 删除类不会禁用与删除的类关联的事件侦听器函数

前端之家收集整理的这篇文章主要介绍了javascript – 删除类不会禁用与删除的类关联的事件侦听器函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我做了一个小问题demonstrate我的问题.

我有问题关闭一个类激活的功能,任何想法?

$(document).ready(function(){

  $('.changeText').click(function(){
    $(this).html( $(this).html() == 'Test' ? 'Changed' : 'Test' );
  });

  $('.changeBG').click(function(){
    $(this).css('background-color','red');
  });

  /* in some cases I need to turn off changeBG function */

  $('.changeBG').removeClass('changeBG');
  // but if you click the div it still turns into red.

});

提前致谢.

最佳答案
你可以delegate the event handler到一个共同的祖先.

在这样做时,它只有在该元素具有该特定类时才起作用,因为在实际触发click事件时(而不是在附加事件处理程序时)进行检查.

Example Here

$(document).on('click','.changeBG',function(){
    $(this).css('background-color','red');
});

在上面的例子中,文档是共同的祖先.根据您的标记,您可能希望将其更改为最接近的常量祖先元素,以便每次单击文档时都不会触发该事件.

或者,您也可以使用.off()方法,并使用event namespaces删除该特定事件处理程序.

您可以附加名为click.changeBG的特定点击事件:

$('.changeBG').on('click.changeBG','red');
});

然后使用.off(‘click.changeBG’)删除该特定事件:

Example Here

$('.changeBG').removeClass('changeBG').off('click.changeBG');
原文链接:https://www.f2er.com/jquery/427752.html

猜你在找的jQuery相关文章