Я использовал следующий код, чтобы «щелкнуть снаружи», чтобы закрыть работу:
Вот jsfiddle всего кода (пожалуйста, включите jQuery на левой навигационной панели, чтобы он работал):
http://jsfiddle.net/jhacks/ZxBXe/17/
При щелчке по div-шоу:
$('div.topIconNew').click(
function(){
$(this).siblings('div.topTip').show();
$(this).siblings('div.topDrop').slideDown(240);
При щелчке за пределами div-окна скрыть:
$(document).click(
function(event){
$('div.topTip, div.topDrop').hide();
}
);
$('div.topTip, div.topDrop').click(
function(event){
event.stopPropagation();
}
);
Проблема с этим выше заключается в том, чтоесли я добавлю topIconNew .stopPropagation, то после открытия элементов topTip и topDrop они не закроются, если я снова нажму тот же topIconNew (т. е. переключатель) или другой экземпляр topIconNew.
Мое попытанное решение - этоследующее:
if($('div.topTip, div.topDrop').is(':visible')){
$('div.topIconNew').click(
function(){
// need to specify only divs currently open to hide
$('div.topTip, div.topDrop').hide();
}
)
}
else {
$('div.topIconNew').click(
function(event){
event.stopPropagation();
}
);
}
Я хочу, чтобы выше сказанное скрывало topTip и topDrop при нажатии topIconNew только , если topTip и topDrop видимы И скрывают только topTipи элементы topDiv, которые в данный момент открыты.Кроме того, если ничего не открыто (оператор else), я хочу, чтобы topIconNew остановилPropagation ... так, чтобы div # wrapper.hide () не конфликтовал с topIconNew.show ().
В настоящее времяоператор else работает, так как без него topIconNew .show и .hide конфликтуют друг с другом и не работают.Но теперь они делают ...
Тем не менее, оператор if не работает, так как topTip и topDrop не закрываются, когда они открыты, и я нажимаю topIconNew.Кроме того, я знаю, по крайней мере, одну проблему, с которой я столкнулся, это то, что я не указал закрыть открытые в данный момент topTip и topDrop (сейчас я просто говорю, чтобы они закрыли любую из них).
Любой иВся помощь очень ценится здесь.Спасибо !!!