jQuery - перепривязка при остановке распространения - PullRequest
0 голосов
/ 01 апреля 2012

У меня есть ситуация, когда:

  1. Я добавляю прослушиватель кликов в контейнер
  2. После щелчка я удаляю слушателя, чтобы только ребенок мог распознать щелчок
  3. После нажатия дочернего элемента функциональность контейнера восстанавливается
_______________________
  | #container   [#child] |
  |_______________________|

Моя оригинальная идея:

var toggleContainer = function() {
   var width = ($('#container').width() > 299) ? 145 : 300;
   $('#container').animate({ width: width }).off('click');
}

$('#container').click(toggleContainer);

$('#child').click(toggleContainer, function() {
   $('#container').on('click', toggleContainer);
});

Функциональность работает, за исключением того, что прослушиватель щелчка контейнера (toggleContainer) никогда не восстанавливается.Я думал, что проблема может заключаться в распространении событий при нажатии на дочернего элемента, но добавление event.stopPropagation () к дочернему элементу нарушает все.

Так что я в замешательстве.Буду очень признателен за любые советы, которые вы можете предложить.Спасибо.

1 Ответ

1 голос
/ 01 апреля 2012

Передача второго аргумента функции в метод click не делает то, что вы думаете, он делает.Взгляните на документы .

Является ли http://jsfiddle.net/F9aJ4/1/ тем, что вы пытаетесь сделать?

...