Не работает unbind
На страничке есть img c рядом событий:
<img id="storage_rate4" src="rate4.gif" onmousemove="rate_mov('4')" onmouseout="rate_restore('4', 'rate4.gif')" onclick="rate_click('4')" title="Рейтинг" />
в JS файле - функция, в конце которой вызывается unbind, который по идее должен удалить все события из img:
function rate_click(storage_id)
{
// .. Ajax код ..
$('#storage_rate4').unbind(); // удаляем все события
}
однако ничего не происходит :( никакой реакции... Уже всё перепробовал, и весь остальной код убирал и упрощал до невозможности, и различные вариации unbind с параметрами - указывал конкретное событие и функцию, ничего не помогает! Ошибок в отладчике Оперы нет! версия jQuery: 1.11.1.min Браузеры: Opera 23.0.1522.75, IE 8 (x64) :help: подскажите пожалуйста, что может быть не так? |
Dion,
jQuery снимает обработчики навешенные через jQuery. то есть если бы было так, то работало бы:
$("#storage_rate4").bind({
mousemove: function () {...}
})
$("#storage_rate4").unbind()
|
tsigel,
Спасибо за подсказку, теперь всё ясно :) Решение: Может кому-нибудь пригодится, если нужно удалить уже существующие в коде события воспользуйтесь функцией removeAttr Пример:
$("#element_id").removeAttr('onmousemove');
|
Dion,
Это только в том случае если обработчики прописыны в атрибутах, если же они навешаны на нативном js то снимать их придется с помощью removeEventListener |
| Часовой пояс GMT +3, время: 18:08. |