检测div是否具有通过单击添加的某个类(无刷新)

时间:2013-03-27 19:56:12

标签: javascript jquery

我正在检测没有某个类的div上的点击(class =“off”),并且在函数结束时,设置了一个cookie,触发一些php代码,在刷新页面后将该类添加为“off”,因此,在单击并刷新页面后,该功能的操作不再适用于该特定div。到目前为止一切都很好......

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

如何在一次点击后停止工作?

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

谢谢你们。

3 个答案:

答案 0 :(得分:0)

改为使用$(this)

$('#example').not('.off').click(function() {
    $(this).addClass('off');
});

或者,如果您想在使用one

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

答案 1 :(得分:0)

只需删除类,就无法删除曾经绑定在元素上的处理程序。您还需要取消绑定处理程序

$('#example').not('.off').on('click', function() {
    // do stuff
    $('#example').addClass('off');
    //remove the event handler
    $('#example').off('click');
}

另一个解决方案是你可以通过

检查div是否已经有了这个类
if($('#example').hasClass("off"))
{
    return;
}

这是另一种解决方案。我称之为quickfix。

答案 2 :(得分:0)

如何不使用其他类并使用.off

删除事件处理程序
$('#example').click(function() {
  $(this).off('click');
});