2010-05-24 6 views
2

Я создаю всплывающее окно в запросе. Все хорошо с всплывающим окном. Я заставил его видеть, что таймер начинается, когда пользовательская мышь покидает div, чтобы закрыть его. Если он снова войдет в div до завершения таймера, таймер будет очищен.jQuery: Если пользователь нажимает на div

Это прекрасно, но что делать, если пользователь щелкает из div? Я хочу, чтобы также закрыть div. Единственная проблема заключается в том, что я не хочу прикреплять события кликов к обертке на странице (потому что она включает в себя всплывающее меню). Я видел методы, которые обертывают весь экран прозрачным div, а затем присоединяют событие щелчка, чтобы попасть. Хотя это может сработать, он смущает пользователя, если он щелкнет скрытый div, намереваясь щелкнуть ссылку. Он должен будет дважды щелкнуть ссылку. Как только два закрывают div (скрывая ссылку), и в другое время, чтобы на самом деле щелкнуть мышью. Кроме того, вы теряете курсоры мыши, прикрепленные к любым замаскированным элементам на странице (например, указатель курсора ссылок и т. Д.).

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

onclicksomewhereelse = "closeme();"

lol.

ответ

4

Предполагая:

<div id="dialog">...</div> 

и:

#dialog { display: none; } 

использование:

$(document).click(function() { 
    if ($(this).parents("#dialog").length > 0) { 
    $("#dialog").hide(); 
    } 
}); 

Это не будет мешать другим click() обработчиков у вас есть.

+0

$ (это) является ссылкой на документ, поэтому у него нет родителей, чтобы скрываться, никогда не будет вызван. –

Смежные вопросы