Как закрыть диалог
Представьте что у вас на странице есть 5 разных диалогов, они могут быть открыты в любой последовательности но два сразу открытыми быть не могут. Значит надо закрывать все открытые, но как их ывыбрать, не хранить же 5 ссылок на диалоги.
Первый пришедший в голову вариант был прост как двери
$("#dialog1","#dialog2","#dialog3","#dialog4","#dialog5").dialog("close");
но если хотя бы один диалог не был создан при старте страницы то вылетит Exception. Естественно создавать диалоги при старте бессмысленно. ни один может не понадобиться а ресурсов они отъедают нормально. Второй вариант был таким
for (var i=1,j=5;i<j;i++){
try{
$("#dialog"+i).dialog("close");
}catch(e){
// do nothing
}
}
и несколько дней эта конструкция муляла мне глаза. Наконец я переписал это примерно так
for (var i=1,j=5,d;i<j;i++){
d = $("#dialog"+i);
if(d.data("dialog")){
d.dialog("close");
}
}
стало лучше но еще не совершенно, последним вариантом стало
$("div:data(dialog)").dialog("close");
теперь я доволен, а какие еще есть варианты?
Свежие комментарии