2015-05-23 5 views
0

Я создал плагин jQuery, который заменяет панель прокрутки по умолчанию на мою собственную и обрабатывает mousewheeling и перетаскивает события бара.Обработчик Mousewheel для дочернего элемента и его родителей

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

Это происходит потому, что я связал прослушиватель событий mousewheel как с дочерним, так и с родительским содержимым, и когда моя мышь над ними обоим, он вызывает оба обработчика событий.

Проблема в том, что мне нужно только колесо только детского контента, не затрагивая родителя.

У вас есть какие-либо советы по его устранению? Перетаскивание события прокрутки работает нормально.

+1

Пожалуйста, поделитесь код вы используете, чтобы мы могли воспроизвести проблему – devconcept

ответ

0

Вам необходимо остановить распространение события. Это остановит событие от пузырьков дерева DOM и запускает родительские элементы.

http://jsbin.com/yelijelowa/1/edit?js,output

$('body').on('mousewheel', function (e) { 
    alert('Body scroll'); 
}); 

$('.child').on('mousewheel', function (e) { 
    e.stopPropagation(); 

    alert('Child scroll only'); 
}); 

Если вы закомментировать e.stopPropagation(); линию вы заметите, что оба оповещения пожара.

Документация:

+0

В 1000 спасибо. Это сработало))) Кажется, у меня недостаточно репутации, чтобы поблагодарить вас ( –

+0

Вы должны уметь выбрать это как «лучший ответ», который, как правило, позволит другим узнать, что ваша проблема решена. Вы разблокируете функцию upvoting с большим количеством [репутации] (http://stackoverflow.com/help/privileges). – Oka

 Смежные вопросы

  • Нет связанных вопросов^_^