Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Где такой шлак работает.
parents() вынес остатки моего разума, собираем всю родительскую цепочку ради того чтобы выяснить нажали мы вне popup и скрыть его.
Можно создать фоновый див, который будет лежать под всеми окнами и ловить на себя клик, попутно скрывая все элементы с классом .popupBlock, который мы пропишем всем окнам.
Похоже, тут проверка, что если "кликнутый" элемент вне всплывающего окна, то закрыть это окно. Можно было сделать так: событие "e" содержит координаты клика (x,y), а вычислить левый верхний и нижний правый углы окна (слоя) легче легкого. Далее элементарной математикой узнаем, был ли клик вне окна, и если да, то закрываем его (прячем). Делать это, конечно, нужно только для видимых окон. Примерно такая структура:
var winds=$("#win1,#win2,...");
$(document).click(function (e) {
var click={x: e.pageX, y: e.pageY}
winds.each(function(){
var bounds=getBounds(this);
if (!isInside(click, bounds))
$(this).hide();
})
}
parents() вынес остатки моего разума, собираем всю родительскую цепочку ради того чтобы выяснить нажали мы вне popup и скрыть его.
Можно создать фоновый див, который будет лежать под всеми окнами и ловить на себя клик, попутно скрывая все элементы с классом .popupBlock, который мы пропишем всем окнам.
var winds=$("#win1,#win2,...");
$(document).click(function (e) {
var click={x: e.pageX, y: e.pageY}
winds.each(function(){
var bounds=getBounds(this);
if (!isInside(click, bounds))
$(this).hide();
})
}