Как вы можете подавить события щелчка # hrefs?

Я хотел бы автоматически подавлять события кликов, когда ссылка href является хешем (#). Я не хочу останавливать событие с помощью e.preventDefault() в каждом представлении.

Как вы можете остановить события щелчка во всем приложении для # hrefs?


person imrane    schedule 25.07.2012    source источник


Ответы (1)


Интересный вопрос. Очевидно, что магистральная маршрутизация запускается до поведения по умолчанию. Что вам нужно сделать, так это вставить обработчик событий, который срабатывает между магистральной маршрутизацией и поведением по умолчанию, а затем e.preventDefault().

Я считаю, что порядок выполнения обработчиков событий зависит от порядка, в котором они определены. Так что немного поиграйте с этим. Вы можете использовать следующее для проверки массива обработчиков событий: $(window).data('events'); (я предполагаю, что вы используете jQuery?)

person wanovak    schedule 25.07.2012
comment
Ага - с помощью Jquery. Поискав вокруг, я нашел это решение Backbone-Boilerplate - Таким образом, при инициализации приложения они подавляют событие перед использованием метода навигации... Мысли об этом? - person imrane; 26.07.2012
comment
Похоже, вы могли бы поставить preventDefault прямо в конце этого скрипта. По крайней мере стоит попробовать. - person wanovak; 26.07.2012
comment
да может просто пойти дальше и сделать это. Спасибо. - person imrane; 26.07.2012