Leave a Comment
Как бороться с повторным добавлением обработчика события в jQuery
Нужно было навешивать и снимать обработчик клика динамически, при этом не затронув чужие обработчики, а их на элементе несколько, каждый ставится своим виджетом.
Мой jQuery-ui-виджет навешивает клик только если его ещё нет. Для этого сделан отдельный метод:
_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 );
}
} );
},
//===========================================================================}}}
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.