Спорадическое поведение типа цикла с помощью onClick - PullRequest
0 голосов
/ 07 декабря 2010

Мне трудно определить решение проблемы со странным поведением 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");
        }
    }
}

Проблема, с которой я сталкиваюсь, заключается в том, что по какой-то причине онклик зацикливается, и чем больше вы нажимаете на него, тем больше обращений к БД выполняется, пока в конечном итоге не будет выполнено слишком много и браузер не будет работать.

Это очень странно, так как на самом деле не задействованы какие-либо петли; это то, что сбивает меня с толку.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2010

Когда вы меняете метод привязки onclick?На каком контроле вы делаете флажок onclick..a?если да, то вы ошибочно выполняете проверку в методе, которая также может автоматически вызвать щелчок мышью?

0 голосов
/ 07 декабря 2010

Похоже, вы зависите от установки атрибута onClick в '' (пусто), чтобы попытаться очистить существующие события кликов. Это не будет работать, вам нужно отменить привязку предыдущих событий jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...