Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает unbind (https://javascript.ru/forum/jquery/49631-ne-rabotaet-unbind.html)

Dion 21.08.2014 18:01

Не работает 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: подскажите пожалуйста, что может быть не так?

tsigel 21.08.2014 18:16

Dion,
jQuery снимает обработчики навешенные через jQuery.

то есть если бы было так, то работало бы:
$("#storage_rate4").bind({
   mousemove: function () {...}
})

$("#storage_rate4").unbind()

Dion 21.08.2014 18:21

tsigel,
Спасибо за подсказку, теперь всё ясно :)

Решение:
Может кому-нибудь пригодится, если нужно удалить уже существующие в коде события воспользуйтесь функцией removeAttr

Пример:
$("#element_id").removeAttr('onmousemove');

tsigel 22.08.2014 10:01

Dion,
Это только в том случае если обработчики прописыны в атрибутах, если же они навешаны на нативном js то снимать их придется с помощью removeEventListener


Часовой пояс GMT +3, время: 21:38.