События jQuery ... сколько кода должно войти внутрь? - PullRequest
3 голосов
/ 11 декабря 2011

Если я прикрепляю события изменения ко многим элементам, скажем каждый флажок на большой форме, а затем на основе этого обрабатываю правила, должен ли я выполнять отдельную функцию вместо того, чтобы этот код был в анонимной функции внутри события?

$(".magic_checkbox").change(function(event){
  //somewhat lengthy code here
});

Создает ли это отдельный объект функции JavaScript для каждого флажка, или они все собираются использовать один указатель?Если они все дублируют, будет ли это вообще иметь значение в общей схеме вещей?

1 Ответ

2 голосов
/ 11 декабря 2011

Существует только одна анонимная функция, но вы можете рассмотреть возможность использования делегированных событий. Создайте отдельный обработчик событий для родительского объекта из элементов .magic_checkbox. Затем сделайте следующее:

$("#parentObjectId").on("change", ".magic_checkbox", function(event){
    // your somewhat lengthy code here
});

или ...

$("#parentObjectId").on("change", ".magic_checkbox", function(event){
    somewhatLengthyMethod();
});

function somewhatLengthyMethod() {
    // your somewhat lengthy code here
}

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

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