2013-11-25 6 views
2

У меня есть вопрос события связывания JQuery, который сводит меня с ума ...Несвязанность JQuery Обработчики событий

Допустим, у меня есть два обработчика событий того же типа, связанного с тем же объектом. Ниже приведен пример события mousemove, связанного с объектом window.

$('body').on('mousedown', '#uiScrollbar', function(e) { 
    var uiWidth = ui.width(); 
    var mouseStart = e.pageX; 
    $(window).mousemove(function(e) { 
     e.preventDefault(); 
     var pixelsMoved = mouseStart - e.pageX; 
     ui.width(uiWidth + pixelsMoved); 
    }); 
}).mouseup(function() { 
    $(window).unbind('mousemove'); 
}); 

Итак, теперь давайте говорить, что я добавить еще mousemove событие в окно что-то совсем другое. Очевидно, что $(window).unbind('mousemove') собирается развязать оба обработчика событий. Я знаю, что в raw JS вы можете назначить метод addEventListener() ссылочной переменной, а затем просто использовать это, чтобы удалить прослушиватель событий, но я не могу найти никакой документации о том, как jQuery поддерживает использование ссылочной переменной.

Возможно, мне не хватает чего-то действительно простого? Благодаря!

ответ

3
var handler = function() { 
    alert("The quick brown fox jumps over the lazy dog."); 
}; 
$("#foo").bind("click", handler); 
$("#foo").unbind("click", handler); 
+0

Я надеюсь, что помогает! – WHill

+0

То же самое относится к методу .on. –

+0

Это помогает. Я предполагаю, что моя проблема заключалась в том, что я передавал анонимную функцию в качестве аргумента в сравнении с определением функции. Спасибо! – SeeMeCode

1

Вы должны использовать .off(), как

$('body').off('mousedown', '#uiScrollbar') 
Смежные вопросы