Соглашения об именах пользовательских событий jquery
Итак, что это такое?
Я имею в виду, что я знаю, что существует пространство имен, но если имя моего события слишком очевидно, скажем submit
, то просто добавление пространства имен submit.myns
не предотвращает его запуск при запуске стандартного submit
.
Хорошо, я знаю, submit
- неплохой пример, но если я хочу использовать то же имя, что и некоторый плагин, который я использую? Когда у меня есть большой сайт, с множеством настраиваемых событий и множеством плагинов, это может быть проблемой, особенно если я хочу, чтобы имена событий были простыми и значимыми.
Итак, вы используете какие-то соглашения, например префиксы /postfixes (например, myns:event
/myns_event
)? Или, может быть, я слишком обеспокоен, и мои беспокойства необоснованны?
EDIT:
Пространства имен велики, если вам нужно группировать ограниченные события для легкого развязывания. Но способ, которым он работает, не может быть уверен, что обработчик click.my
запускается только click.my
. Для этого мы должны называть его другим, например my_click
- тогда мы сохраняем значащее имя, у нас есть информация о том, что это наше событие (и, скорее всего, кто-то его использует), и мы по-прежнему можем использовать стандартное пространство имен имен.
Некоторый код, чтобы увидеть различия: http://jsfiddle.net/h2kuN/1/
Ответы
Ответ 1
Namespacing решает эту проблему — но , только если все используют его.
Вы можете связать и запустить christmas.adam
для своего сезонного плагина, и я могу связать и запустить christmas.bennett
, и мы не будем вмешиваться. Но если кто-то приходит и запускает christmas
, тогда оба наших плагина будут запущены.
Это происходит потому, что если вы привязываете обработчик к event.namespace
, то запуск event
приведет к срабатыванию вашего обработчика. Это не ясно в документации API jQuery, но это верно в отношении jQuery 1.7.1.
Таким образом (помимо простого удаления сразу нескольких обработчиков), пространство имен служит для защиты другого кода, а не вашего.