Jquery 带有onClick的零星循环类型行为

Jquery 带有onClick的零星循环类型行为,jquery,ajax,onclick,Jquery,Ajax,Onclick,我的页面上的一个元素上有一个奇怪的onClick行为,很难找到问题的解决方案 基本上,我在一个页面上有多个跨距,当他们点击时,记录的状态会根据需要改变 由于DB更新是通过Ajax完成的,因此我将onClick事件处理程序动态更改为如果用户将记录从活动切换为已撤销,则onClick将更改为调用一个名为setreversed()的方法,active;setActive() span容器的一个示例是: 激活 我的setActive()方法: 我遇到的问题是,出于某种原因,onclick进入了一个循环,

我的页面上的一个元素上有一个奇怪的onClick行为,很难找到问题的解决方案

基本上,我在一个页面上有多个跨距,当他们点击时,记录的状态会根据需要改变

由于DB更新是通过Ajax完成的,因此我将onClick事件处理程序动态更改为如果用户将记录从活动切换为已撤销,则onClick将更改为调用一个名为setreversed()的方法,active;setActive()

span容器的一个示例是:

激活

我的setActive()方法:

我遇到的问题是,出于某种原因,onclick进入了一个循环,您按下onclick的次数越多,对DB的调用就越多,直到最后调用的次数过多,浏览器崩溃


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

看起来您需要将onClick属性设置为“”(空白)来尝试清除现有的单击事件。这将不起作用,您需要修改以前的jQuery事件

何时更改onclick的方法绑定?在哪个控件上执行onclick..a复选框?如果是,您是否错误地在方法中的某个位置执行了.checked操作,该操作也会自动触发onclick?

因此,在绑定新的单击事件之前,我应该解除绑定上一个单击事件?这可以解释为什么它看起来是循环的,因为有多个onClick。事实证明,我必须保持onClick='',在此之前添加$('tier'+tierId)。取消绑定('click');让它工作。
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");
        }
    }
}