Как отменить привязку jquery.mousewheel временно - PullRequest
4 голосов
/ 21 февраля 2012

Я делаю страницу на основе изотопа.Основной экран прокручивается по горизонтали, и я по умолчанию использовал действие колесика мыши, используя скрипт jquery.mousehweel .Я хочу вернуть действие по умолчанию пользователю при открытии статьи и не дать ему прокрутиться горизонтально, но я не могу понять, как это сделать.

Вот ссылка jsfiddle, которая дает пример:

http://jsfiddle.net/DJVX2/529/

Когда вы щелкаете поле, оно становится очень высоким, но если вы используете колесо мыши, оно все равно прокручиваетсястраница из стороны в сторону.Я хотел бы позволить пользователю прокручивать по вертикали только тогда, когда поле высокое.

Спасибо за любую помощь!

примечание: если ваша мышь не находится над div #container, вы уже сможете использовать мышь для горизонтальной прокрутки.Проблема в том, что указатель мыши находится над элементом #makeMeScrollable, который содержит все поля

1 Ответ

2 голосов
/ 21 февраля 2012

Вы должны отстегнуть точно такую ​​же функцию.В своем коде вы отменяете привязку другой функции с похожим размером.Чтобы использовать точно такую ​​же функцию, сначала определите ее и сохраните в переменной, а затем используйте ссылку на эту переменную как в bind, так и в unbind.См. http://jsfiddle.net/DJVX2/530/ для обновления скрипки, показывающего, как это работает в вашем контексте.Основная идея заключается в следующем:

// Define the callback
var callback = function(ev) { ... };

// Bind the callback
$(selector).bind('event', callback);

// Unbind the callback
$(selector).unbind('event', callback);

Начиная с jQuery 1.7 (самая последняя версия на момент написания этой статьи), предпочтительный метод привязки событий заключается в использовании on и off следующим образом:

// Bind the callback
$(selector).on('event', callback);

// Unbind the callback
$(selector).off('event', callback);

(Обратите внимание, что вы также можете передать им другой аргумент для делегирования события. См. документы для получения дополнительной информации.

...