Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.08.2014, 18:01
Новичок на форуме
Отправить личное сообщение для Dion Посмотреть профиль Найти все сообщения от Dion
 
Регистрация: 21.08.2014
Сообщений: 6

Не работает 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)

подскажите пожалуйста, что может быть не так?
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2014, 18:16
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

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

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

$("#storage_rate4").unbind()
Ответить с цитированием
  #3 (permalink)  
Старый 21.08.2014, 18:21
Новичок на форуме
Отправить личное сообщение для Dion Посмотреть профиль Найти все сообщения от Dion
 
Регистрация: 21.08.2014
Сообщений: 6

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

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

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

Последний раз редактировалось Dion, 21.08.2014 в 18:42.
Ответить с цитированием
  #4 (permalink)  
Старый 22.08.2014, 10:01
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
Всплывающее меню (unbind работает как-то неправильно) Neokortex jQuery 3 04.03.2012 12:34
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
ajax запросы, работает на одних компах и не работает на других vtornik23 AJAX и COMET 2 22.03.2010 18:22