Как сохранить функции связывания дочернего элемента в jQuery / javascript - PullRequest
1 голос
/ 08 июля 2011

У меня есть несколько тегов, которые я хочу связать с функцией в указателе даты jQuery.Однако jQuery автоматически связывает другую функцию с событиями mouseover и mouseout родительского (.ui-datepicker-inline) div.

В некоторых случаях я хочу переопределить эту функцию, но когда происходит другое событие, вернитесь обратнопо умолчанию функционирует.Я попытался привязать mouseover к его родительскому div (hasDatepicker), и это работало нормально.Однако, когда я отсоединяю родителя, старая функция связывания ребенка также перестает работать.Почему это?Есть ли способ избежать этого?Мне все равно, выполняет ли ребенок свою функцию привязки, пока привязка родителя делает свое дело потом.Я также не хочу терять функциональность дочернего элемента при отсоединении родительского элемента.

У меня есть элемент jQuery datePicker, который является элементом, который имеет исходную привязку (.ui-datepicker-inline), насколько я могу.сказать из кода пользовательского интерфейса jQuery.

// This binds my function, occurring after datePicker's bound function,
// and works fine.
datePicker.parent().bind('mouseover', hoverWeek) // hoverWeek is a function(event)

/* ... */

// This unbind's datePicker as well as datePicker.parent()
datePicker.parent().unbind('mouseover');

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

[Обновление] Было несколько проблем: В основном у меня был конфликтный код, но были и некоторые проблемы с пузырящийся эффект .Перечисленные ниже решения являются хорошими, и для дальнейшего использования, вот еще одно решение, которое работает: http://jsfiddle.net/redEvo/7QpDx/

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Вы можете передать только свою функцию вызову unbind:

datePicker.parent().unbind('mouseover', hoverWeek);
1 голос
/ 09 июля 2011

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

Я использую .unbind() немного по-другому, используя события в пространстве имен:

datePicker.bind('mouseover.myEvent', hoverWeek);
...