以下是我的 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/