使用onClick的偶发循环类型行为

时间:2010-12-07 18:56:24

标签: jquery ajax onclick

我很难找到解决我页面上某个元素上奇怪的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的调用就越多,直到最终产生太多而浏览器崩溃。

这很奇怪,因为实际上没有涉及任何循环;这就是令我困惑的事情。

2 个答案:

答案 0 :(得分:0)

看起来您依赖于将onClick属性设置为''(空白)以尝试清除现有的点击事件。这不起作用,您需要unbind之前的jQuery事件。

答案 1 :(得分:0)

您何时更改onclick的方法绑定?你正在做什么控制onclick..a复选框?如果是的话,你是否错误地在方法中的某个地方做了.checked也可以自动触发onclick?