Соглашения об именах пользовательских событий jquery - PullRequest
15 голосов
/ 09 сентября 2011

Итак, что они?

Я имею в виду, я знаю, что есть пространство имен - но если мое имя события слишком очевидно, скажем, submit, тогда просто добавление пространства имен submit.myns непредотвращает его запуск при срабатывании стандартного submit.

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

Так что вы используете какие-то соглашения, напримерпрефиксы / постфиксы (например, myns:event / myns_event)?Или, может быть, я слишком обеспокоен, и мои опасения беспочвенны?

РЕДАКТИРОВАТЬ:

Пространства имен хороши, если вам нужно сгруппировать ограниченные события для легкого освобождения.Но способ его работы, никак не может быть уверен, что обработчик click.my запускается только click.my.Для этого мы должны назвать его по-другому, например, my_click - тогда мы сохраняем значащее имя, у нас есть информация, что это наше событие (и вряд ли кто-то его использует), и мы все еще можем извлечь выгоду из стандартного пространства имен событий.

Некоторые коды, чтобы увидеть различия: http://jsfiddle.net/h2kuN/1/

1 Ответ

9 голосов
/ 15 декабря 2011

Пространство имен решает эту проблему - но , только если все его используют .

Вы можете привязать и вызвать christmas.adam для вашего сезонного плагина, а я могусвязать и вызвать christmas.bennett, и мы не будем вмешиваться.Но если кто-то приходит и запускает christmas, то оба наших плагина будут запущены.

Это происходит потому, что если вы связываете обработчик с event.namespace, то запуск event сработает ваш обработчик.Это неясно в документации по jQuery API, но это верно для jQuery 1.7.1.

Так что (кроме облегчения отсоединения нескольких обработчиков одновременно), пространство имен служит для защиты другого кода,не твой.

...