javascript - Jquery onclick 动态变化

标签 javascript jquery jquery-plugins

以下是我的 JQuery onclick 函数。应用于图像的事件。

此代码根据收到的数据值更改 onclick 事件。
我在代码中添加了一个断点,如下代码所示。 发生的一件奇怪的事情是,在我第一次单击解释器时,仅通过我的代码一次,这是正常的。

但是当我点击第二次时,它通过了两次

第三次点击它通过4次

第 5 次点击 8 等

即每次点击调用的回调数量呈指数级增长。现在我的问题是为什么会发生这种情况。

注意:所有变量都已正确定义,但为了简化,我精简了其余代码。

updateUser = function (user, block) {
    jQuery.ajax({
        type: "POST",
        url: "index.php?option=com_contentbuilder&controller=myActicateUser",
        data: data,
        dataType: "json",
        success: function (data) {
            if (data) {
                var pinID = "#pin" + user;
                user = data[0]; 
>>breakpoint        if (data[1] === "0") {

                    jQuery(pinID).click(function () {
                        updateUser(user, "1")
                    });
                    jQuery(pinID).attr("src", tack);


                } else if (data[1] === "1") {

                    jQuery(pinID).click(function () {
                        updateUser(user, "0")
                    });
                    jQuery(pinID).attr("src", tick);

                }
            }
        }
    });
}

我已经尝试过的是

 if(data[1]==="1"){
                             jQuery(pinID).unbind();
                             jQuery(pinID).removeAttr("onclick");
                             jQuery(pinID).click(function(){updateUser(user,"0")});
}

最佳答案

这是因为每次调用 updateUser 时,它都会在同一元素上绑定(bind)额外的 click 处理程序。

首先取消绑定(bind) (jQuery(pinID).unbind('click').click(...))或添加仅在 updateUser 外部绑定(bind)一次

关于javascript - Jquery onclick 动态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19724211/

相关文章:

jQuery loupe & PrettyPhoto - 我怎样才能让它们都工作?

javascript - 自定义单选按钮和复选框

javascript - 使用 DropKick Javascript 设置值/标签的问题

javascript - mCustomScrollbar启用时如何将元素拖到外面

javascript - 以 csv 文件作为数据库的 Reactjs 网页

javascript - 单击 anchor 标记时获取父级 <th> 的属性值

javascript - 如何用jquery解析读取的json元素

javascript - 防止多重连接到我的 Web 应用程序

javascript - $_get 无法通过 js 从新创建的 URL 获取数据

javascript - 如何使用 Modal Bootstrap 确认删除是/否?