双事件处理程序和一个函数。如何防止执行代码两次?

时间:2015-11-26 10:00:56

标签: javascript jquery events javascript-events event-handling

所以我有一个回调函数绑定到两个事件(changefocusout)。但是,只有当我们与之交互的元素不是checkbox时,我才需要关注焦点。

这是示例代码:

$(document).on('focusout change', '.selector', function() {
    if ($(this).is(':checkbox')) {
        // Do stuff and prevent the focusout to trigger. HOW???
    }

    doStuff(); // Action that applies to both cases, but needs to be limited at one execution only
});

上面的代码将执行两次:

  • 选中/取消选中复选框时
  • 当您单击复选框外部时(失去焦点(模糊))

我尝试使用.off,但它最终完全杀死了focousout处理程序,稍后我将需要其他不是复选框的元素。

阻止focusout处理程序触发某些元素的方法是什么?

1 个答案:

答案 0 :(得分:1)

你想做的是

$(document).on('focusout change', '.selector', function(event) {

event是一个事件对象,它具有属性,其中一个属性为type。检查type您现在可以查看是否因为focusoutchange而调用了您的功能,并根据需要运行代码