Есть ли способ отменить привязку только событий без пространства имен? - PullRequest
0 голосов
/ 17 октября 2011

Есть ли способ отменить привязку событий, которые не являются частью определенного пространства имен в jQuery? Что касается inm, существует ли пространство имен по умолчанию, к которому относятся события, если разработчик не указал им пространство имен?

Ex:

$('#id').bind('click.myEvents', handler); //a click with a specific namespace: myEvents
$('#id').bind('click',handler2); //a click without a specific namespace

Смогу ли я нацелить событие второго щелчка, не затрагивая первое?

Ответы [ 3 ]

1 голос
/ 17 октября 2011

Вот, пожалуйста:

// unbinds non-namespaced event handlers
function unbind( elem, type ) {   
    $.each( $( elem ).data( 'events' )[ type ], function () {
        if ( this.namespace === '' ) {
            $( elem ).unbind( type, this.handler );
        }
    });
}

и затем:

unbind( elem, 'click' );

, где elem - ссылка на ваш элемент DOM (var elem = $( '#id' )[0];).

Демонстрационная версия: http://jsfiddle.net/simevidas/2p25N/1/

0 голосов
/ 17 октября 2011

Не то чтобы я знал об этом, но вы можете прикрепить все эти общие события к своему собственному общему пространству имен. Соответствующие обработчики не перезаписывают ссылки друг друга.

Если это слишком сложная задача для реализации, и вы беспокоитесь о стоимости отмены привязки, а затем повторной привязки слишком большого количества элементов в пространстве имен, посмотрите на метод "делегата" JQ и делегирование событий в целом, если вы ' не знакомы.

События всплывают до родительских элементов. Делегирование событий использует это поведение, чтобы поместить один обработчик в родительскую точку пересечения, проверить объект события, чтобы увидеть, из какого исходного элемента было инициировано событие, и затем выполнить поведение. Связывание / повторное связывание одного элемента - это не тонна накладных расходов, так что это может быть вашим лучшим выбором.

0 голосов
/ 17 октября 2011

Это показывает, как выбрать элементы, которые не являются частью другого селектора. Я думаю, что вы могли бы сделать выбор всего, что не в пространстве имен . Хотя я никогда не пробовал, удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...