Закрыть окно
Здравствуйте!
Подскажите пожалуйста как закрыть попап див, кликнув вне его. Соответственно, если кликаем по нему самому, он закрываться не должен. Я пытался так, но как отфильтровать клик по самому диву не понятно: $(document).click(function(){ $('#popup').fadeOut(); }) |
Такой вариантик если попробовать
if ($(this).attr('id') != 'popup') { $(this).fadeOut(); } |
$(document).click(function(e){ var e = e || window.event, x = e.srcElement || e.target; if (x != document.getElementById('popup')) $('#popup').fadeOut(); }) |
exec, спасибо, Ваш вариант работает, но только если всплывающий див пуст. А если он содержит еще элементы и я кликаю по внутреннему содержимому, он все равно закрывается. А хотелось бы, чтобы не закрывался.
|
Решил задачу следующим образом:
(Если у кого то есть более изящное решение, буду рад посмотреть!) $(document).click(function(e){ var e = e || window.event, x = e.srcElement || e.target; var arP = new Array(); var p = $(x).parents(); for(var i=0; i<p.length; i++){ arP[i]=$(p[i]).attr('id'); } arP[p.length]=$(x).attr('id'); if (!inArray(arP, 'popup'))$('#popup').fadeOut(); }); function inArray(mas, element) { for (var i = 0; i < mas.length; i++) { if (mas[i] == element) { return true; } } return false; } |
Может проверять елемент является ли он "popup" и спрашивать, нет ли у него родителя с id="popup"
|
Можно попробовать так:
$(document).click(function(e){ var e = e || window.event, x = e.srcElement || e.target; if (x != document.getElementById('popup') || !$(x).parents('#popup').size()) $('#popup').fadeOut(); }); |
Цитата:
if (x != document.getElementById('popup') && !$(x).parents('#popup').size()) $('#popup').fadeOut(); |
Я решал задачу по другому.
При попапе дива - делал еще один блок с шириной и высотой 100%. на этот фоновый блок вешал событие, которое скрывает попап... P.S. я сторонник идеи, чем меньше изворотов - тем стабильнее работает... наверное, вышеизложенные варианты красивее ;) |
А как работает такая запись кода?
var e = e || window.event, x = e.srcElement || e.target; как это элементы сравниваются через или а потом еще присваиваются?:blink: |
Часовой пояс GMT +3, время: 11:05. |