javascript - jQuery/javascript - 仅当尚未分配事件处理程序时才连接事件处理程序

标签 javascript jquery

我正在将 onclick 处理程序分配给复选框。有时,执行事件绑定(bind)的 JavaScript 会多次运行(在部分回发时),并且处理程序会被分配两次。如何防止处理程序被多次分配?

好的,谢谢您的回复。我写了一些东西来弄清楚元素是否有处理程序:

$.fn.hasHandler = function(eventName, handler)
{
    var _hasHandler = false;

    if(handler != undefined && this.data("events") !== null && this.data("events") !== undefined)
    {
        $.each(this.data("events"), function(name, handlers)
        {
            if(name === eventName)      
            {
                $.each(handlers, function(index, value)
                {
                    if(value.handler === handler)
                    {
                        _hasHandler = true;
                    }
                });
            }
        });
    }

    return _hasHandler;
}

最佳答案

您可以先解绑。

$('#foo').unbind('click').bind('click', function(){...在这里做一些事情...});

关于javascript - jQuery/javascript - 仅当尚未分配事件处理程序时才连接事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5568702/

相关文章:

javascript - javascript/nodeJs 中的两个递归函数和计算器错误。了解差异

jquery - 如何向 jQuery UI 小部件添加版本号

javascript - 使用 Jquery 函数的参数运行不同的结果

javascript - 过滤一个对象以获取另一个数组中的值

javascript - 如何使用 ReactJs 构建响应式网站

javascript - 溢出-x : visible; doesn't work with overflow-y: auto; any workaround?

javascript - 使用 jQuery 解析 XML

javascript - 如何垂直居中模态?

javascript - jQuery 或 JavaScript Sticky Elements 的好教程

Jquery 加载与隐藏和显示