我做了一个小提示来证明我的问题.
我有问题关闭一个类激活的功能,任何想法?
$(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. });
提前致谢.
您可以将事件处理程序委派给共同的祖先.
在这样做时,它只有在该元素具有该特定类时才起作用,因为在click
事件实际被触发时(而不是在附加事件处理程序时)进行检查.
这里的例子
$(document).on('click', '.changeBG', function(){ $(this).css('background-color', 'red'); });
在上面的例子中,document
是共同的祖先.根据您的标记,您可能希望将其更改为最接近的常量祖先元素,以便每次单击时都不会触发事件document
.
或者,您也可以使用该.off()
方法,并通过利用事件命名空间删除该特定事件处理程序.
您可以附加一个click
名为的特定事件click.changeBG
:
$('.changeBG').on('click.changeBG', function(){ $(this).css('background-color', 'red'); });
然后使用.off('click.changeBG')
以下命令删除特定事件
这里的例子
$('.changeBG').removeClass('changeBG').off('click.changeBG');