Мне трудно определить решение проблемы со странным поведением 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");
}
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что по какой-то причине онклик зацикливается, и чем больше вы нажимаете на него, тем больше обращений к БД выполняется, пока в конечном итоге не будет выполнено слишком много и браузер не будет работать.
Это очень странно, так как на самом деле не задействованы какие-либо петли; это то, что сбивает меня с толку.