Я создал сборщик дат, который использует ajax для заполнения элемента идентификатором calendarContainer. Когда пользователь нажимает кнопку, чтобы добавить календарь, я хочу, чтобы пользователь мог щелкнуть в другом месте экрана, кроме календаря, и скрыть его. КалендарьКонтейнер находится в корне Дома, и я пробовал все, что мог придумать, чтобы заставить это работать.Добавить событие ко всем элементам, кроме заданного с помощью jQuery
У меня есть календарь, чтобы уйти, когда он не нажал. Однако, когда я нажимаю на календарь, он также уходит. Я хочу, чтобы календарь ушел, когда он не нажал.
Вот все, что я пробовал.
$(":not(#calendarContainer > table)").live('click', function() { $.Calendar.hide(); });
$(":not(#calendarContainer").live('click', function() { $.Calendar.hide(); });
$(":not(#calendarContainer)").click(function() { $.Calendar.hide(); });
$("body:not(#calendarContainer)").click(function() { $.Calendar.hide(); });
$(":not(#calendarContainer, #calendarData)").live('click', function() { $.Calendar.hide(); });
Спасибо за любую помощь, Metropolis
Awesome! Спасибо, много Ник. Я никогда не понимал, что это пузырь. Я думал, что это могло быть здесь, но я не был уверен. как пузырьки работают в небольшом масштабе, но не на весь дом. У вас есть хорошие подсказки для барботажа или хорошего учебника? – Metropolis
@Metropolis - Quirksmode имеет достойное объяснение, я думаю: http: //www.quirksmode. org/js/events_order.html На самом деле это не отличается от небольших и больших масштабов, события просто продолжают пузыриться до DOM если вы не остановите их. Некоторые события не пузырятся или не работают в некоторых браузерах (хотя jQuery в большинстве случаев компенсирует это), поэтому есть несколько причуд, но ничего сложного по сравнению с базой. –
Если я прекращаю распространение, хотя ..... это мешает каким-либо событиям после него? Как узнать, что я останавливаю, и что я хочу продолжать работать? Я прочитал эту статью о пузырях раньше, это очень хорошо. Спасибо за помощь. – Metropolis