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

Double event handler and one function. How to prevent executing code twice?

所以我有一个回调函数绑定到两个事件(changefocusout)。但是,只有当我们与之交互的元素不是 checkbox.

时,我才需要 focusout 发生

这是示例代码:

$(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 处理程序针对某些元素触发?

你想做的是

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

event是一个事件对象,它有属性,其中之一是type。检查 type 您现在可以查看您的函数是否因 focusoutchange 和 运行 代码而被调用