Общий подход jQuery к пользовательскому интерфейсу? - PullRequest
2 голосов
/ 04 мая 2011

Это маленький вопрос, но важный.

Должен ли я запускать .unbind ('click') перед выполнением, например, button.click (...?

В принципе, если для элемента управления определено событие, я должен отсоединить его, прежде чем присоединить его снова? Я знаю, что это относится к тем, которые я добавляю, используя 'bind ()' ...

1 Ответ

2 голосов
/ 04 мая 2011

Я знаю, что это тот случай, который я добавляю с помощью 'bind ()' ...

click(func...) - это просто сокращение для bind('click',...).

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

Если у вас есть ссылка на обработчик в любом случае, вы можете просто сделать:

$element.unbind('click', handler);

Это удаляет только обработчик событий handler и оставляет все остальные нетронутыми.


В этом контексте могут быть интересны пространства имен событий :

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

$element.bind('click.onlyone', function()...);
$element.unbind('click.onlyone');
//or $element.unbind('.onlyone');
$element.bind('click.onlyone', function()...);

Обновление:

bind не удалит предыдущие обработчики. Поэтому, если вы не хотите, чтобы они запускались, вы должны сначала unbind их ...

...