Уникальное пространство имен событий

0

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

Я хотел бы сделать что-то похожее на:

unbind("scroll.uniqueNamespace")

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

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

  • 0
    вместо того, чтобы связывать тонну событий, почему бы не связать одно событие, а затем только проверять наличие в массиве активных элементов в слушателе этого события
  • 0
    @zachallia, мне нравится эта идея ...
Теги:

1 ответ

1
Лучший ответ

Чтобы развязать конкретный прослушиватель, jQuery принимает второй параметр в .unbind

.unbind( eventType [, handler(eventObject) ] )

Таким образом, вы можете хранить функцию прослушивателя в своем массиве элементов, а когда вы отвязываете, передайте этот прослушиватель методу unbind. Что-то вроде:

unbind("scroll.uniqueNamespace", els[el].listener)

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

Источник: http://api.jquery.com/unbind/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню