Javascript 检测div是否具有通过单击添加的特定类(不刷新)

Javascript 检测div是否具有通过单击添加的特定类(不刷新),javascript,jquery,Javascript,Jquery,我检测到在没有特定类(class=“off”)的div上单击,并且在函数末尾,设置了一个cookie,在刷新页面后触发一些php代码以添加类“off”,因此在单击并刷新页面后,函数的操作不再在该特定div上工作。到目前为止一切都很好 我遇到的问题是,我希望函数停止处理任何已单击的div,而不必刷新页面。我尝试在函数末尾使用.addClass添加该类,但即使现在单击一个div,它仍然可以工作并添加“off”类,但是如果再次单击,该函数仍然可以在div上工作,我感觉它没有检测到对原始html代码的更

我检测到在没有特定类(class=“off”)的div上单击,并且在函数末尾,设置了一个cookie,在刷新页面后触发一些php代码以添加类“off”,因此在单击并刷新页面后,函数的操作不再在该特定div上工作。到目前为止一切都很好

我遇到的问题是,我希望函数停止处理任何已单击的div,而不必刷新页面。我尝试在函数末尾使用.addClass添加该类,但即使现在单击一个div,它仍然可以工作并添加“off”类,但是如果再次单击,该函数仍然可以在div上工作,我感觉它没有检测到对原始html代码的更改

如何使其在单击一次后停止工作

$('#example').not('.off').click(function() {
// do stuff
$('#example').addClass('off');
}
谢谢大家。

改用
$(这个)

$('#example').not('.off').click(function() {
    $(this).addClass('off');
});
或者,如果您想触发一次事件,请使用
one

$('#example').one('click', function() {
    // this code will be executed once per element
});

绑定到元素上的处理程序不能仅通过删除类来删除。您还需要解除处理程序的绑定

$('#example').not('.off').on('click', function() {
    // do stuff
    $('#example').addClass('off');
    //remove the event handler
    $('#example').off('click');
}
另一个解决方案是,您可以通过检查div是否已经拥有类

if($('#example').hasClass("off"))
{
    return;
}

这是另一种解决方案。我称之为快速修复。

不使用额外的类并简单地删除带有


您需要在添加了“off”类的元素上解除click处理程序的绑定,因为当这些元素没有
时,click处理程序会初始绑定到这些元素。off
。click()
不会影响实时更改。谢谢,但只有在函数中发生某些其他事情时,才会添加addclass,这使得$this不适用(它通过其他函数)。问题不是没有添加“off”,而是函数没有检测到div有一个名为“off”的新类
$('#example').click(function() {
  $(this).off('click');
});