我很难找到解决我页面上某个元素上奇怪的onClick行为问题的解决方案。
基本上我在页面上有多个跨度,当他们点击时,记录的状态会根据要求而变化。
当通过Ajax完成数据库更新时,我动态更改onClick事件处理程序,如果用户将记录从活动切换到撤销,则onclick将更改为调用名为setRevoked()的方法,active; SETACTIVE()。
span容器的一个示例是:
激活
我的setActive()方法:
function setActive(tierId) {
if (tierId) {
console.log('active' + tierId);
$.post("admin.php?module=clients&action=tier_activate", {'tierId':tierId,'clientId':1234> }, function(data) {
clearMessages();
var obj = jQuery.parseJSON(data);
if(obj.message == 'success') {
var js = "setRevoke("+tierId+"); return false;";
var newClick = new Function(js);
$('#tier_' + tierId).attr({title: 'Revoke', onClick: ''}).click(newClick).text('Revoke');
addJavascriptMessage(obj.reason, "success");
}
else if (obj.message == 'failed') {
addJavascriptMessage(obj.reason, "error");
}
});
}
else {
addJavascriptMessage('A valid status must be selected', "error");
}
}
}
我遇到的问题是由于某种原因onclick进入循环,你按下onclick越多,对DB的调用就越多,直到最终产生太多而浏览器崩溃。
这很奇怪,因为实际上没有涉及任何循环;这就是令我困惑的事情。
答案 0 :(得分:0)
看起来您依赖于将onClick属性设置为''(空白)以尝试清除现有的点击事件。这不起作用,您需要unbind之前的jQuery事件。
答案 1 :(得分:0)
您何时更改onclick的方法绑定?你正在做什么控制onclick..a复选框?如果是的话,你是否错误地在方法中的某个地方做了.checked也可以自动触发onclick?