jqueryui DatePicker, используя ближайший вызов на html / body click, не распознавая dom за пределами таблицы datepicker - PullRequest
1 голос
/ 13 мая 2011

У меня есть пример проблемы на jsfiddle .

То, что я пытаюсь выполнить, - это когда вы нажимаете в html / body документа, который я смотрю, чтобы увидеть, находится ли целевой элемент события внутри div. Это прекрасно работает, пока я не введу в JQuery UI datepicker. При нажатии в течение дня якорь не распознается как находящийся во внешнем элементе div. Это похоже на единственную вещь, которую ближайший вызов jQuery видит, когда он прогуливается по дереву и останавливается за столом, который создает указатель даты. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

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

Что вы все думаете? Кажется, что средство выбора даты при выборе дня перерисовывает средство выбора даты, и к тому моменту, когда событие инициируется, его уже нет в домене, что похоже на то, что происходит с таблицей, являющейся максимальным родителем.

0 голосов
/ 13 мая 2011

Вам необходимо объявить datepickerEl как глобальную переменную, так как она не достигает click область действия обработчика.

Еще одно изменение, которое я хотел бы сделать, это изменить , если метод условия closest на parents, так как элементы внутри DatePicker могут быть нажаты и все еще находятся внутри class="outer" div

Кроме того, вам нужно изменить вызов события на e.stopPropagation() (вы перепутали имя метода с e.preventDefault(), я думаю, что он используется только для click , submit и т.д. событий по умолчанию поведение). * * тысяча двадцать-одна

Я полагаю, это то, что вы ищете:

var datepickerEl;
$(function() {
    datepickerEl = $('.outer').datepicker();
    $('html,body').click(function(e) {
         e.stopPropagation();
         if ( ! $(e.target).parents([datepickerEl]).length ) {
             alert('What is going on');
         }
     });
 });
...