Tag Archives: event
pointer-events: пробрасывание событий через SVG-слой ниже
В css надо написать:
1 2 3 |
#my-cool-svg { pointer-events: none; } |
Можно делать с событиями много интересного, подробнее здесь: https://developer.mozilla.org/en-US/docs/CSS/pointer-events
Как бороться с повторным добавлением обработчика события в jQuery
Нужно было навешивать и снимать обработчик клика динамически, при этом не затронув чужие обработчики, а их на элементе несколько, каждый ставится своим виджетом. Мой jQuery-ui-виджет навешивает клик только если его ещё нет. Для этого сделан отдельный метод:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
_bindClick: function() { var me = this; var $me = $( me.element ); // боремся с повторным навешиванием обработчика var events = $.data( $me.get(0), 'events' ); var filteredEvents = []; if ( 'click' in events ) { filteredEvents = $.grep( events.click, function( Event ) { return Event.type == 'click' && Event.namespace == me.widgetName; } ); } if ( filteredEvents.length ) { return; } $me.bind( 'click.' + me.widgetName, function( Event ) { // логика клика, к примеру: if ( ! me.options.allowDoubleClick ) { $me.unbind( 'click.' + me.widgetName ); } } ); }, //===========================================================================}}} |
Работа с событиями в jQuery 1.7
В jQuery 1.7 добавили .on() и .off() для единообразия работы с событиями. bind, live и delegate могли вести себя непредсказуемо при использовании вместе. Например, $(document).unbind(‘click’) убирал все live(‘click’)-события со всего документа. Новое API событий .on() and .off() призвано как-то унифицировать систему создания обработчиков событий: Старое API Новое API $(elems).bind(events, fn) $(elems).on(events, fn) $(elems).bind(events, { mydata: 42 }, …