Я пытаюсь закрыть выпадающее меню, когда кто-то нажимает в другом месте на сайте. Только если он найден открытым. Однако приведенный ниже фрагмент, похоже, не работает и блокирует браузер. Так что я думаю, что я ошибаюсь. Есть ли лучший способ справиться с этим понятием?
$(document.body).click(function() {
if($('#ztsWidgetMenu').is(':visible'))
{
$('#addDashWidgetBox').click();
}
});
EDIT
Я сделал функцию, которая теперь срабатывает при событии щелчка, чтобы элемент открывал его, а щелчок тела вызывал, пузырьки прекратились, но я столкнулся с другой проблемой сейчас. Для того, чтобы открыть меню, мне нужно щелкнуть мышью по крайней мере 2 раза, чтобы открыть меню. И если я нажму на ту же кнопку, чтобы закрыть ее, то я застряну с ней открытой, если я не нажму на тело в другом месте, где сейчас ..
function openCloseWidgetMenu()
{
dashboardJSON.widgets.sort(sortJSONresultsByWidgetID);
if(widgetMenuShowHide == "hide")
{
widgetMenuShowHide = "shown";
$.each(dashboardJSON.widgets, function(x)
{
if(dashboardJSON.widgets[x].show == "no"){$('#ztsWidgetMenu ul').append('<li class="widgetMenuItems" rel="'+dashboardJSON.widgets[x].wigetID+'" widgetcolor="'+dashboardJSON.widgets[x].widgetColor+'">'+dashboardJSON.widgets[x].widgetTitle+'</li>');}
});
$('#ztsWidgetMenu').css({"display":"block", "position":"absolute", "left":($('#addDashWidgetBox').position().left-35) + "px", "top":($('#addDashWidgetBox').offset().top+$('#addDashWidgetBox').height()+10) + "px"});
}
else
{
$('#ztsWidgetMenu ul li').remove();
$('#ztsWidgetMenu').hide();
widgetMenuShowHide = "hide";
}
}
$('#addDashWidgetBox').live({
click: function()
{
//e.preventDefault();
openCloseWidgetMenu();
},
mouseover: function()
{
$('#addWidetMenuBar').css({"background-position":"-0px -697px"});
$(this).css({"color":"#000"});
},
mouseout: function()
{
$('#addWidetMenuBar').css({"background-position":"-0px -662px"});
$(this).css({"color":"#5a5a5a"});
}
});
$(document.body).click(function() {
if($('#ztsWidgetMenu').is(':visible'))
{
openCloseWidgetMenu();
}
});
Редактировать 2
Я исправил свою проблему по большей части, кроме как сейчас .. когда я нажимаю на элемент, я хочу отключить функцию, чтобы показать меню, в котором регистрируется щелчок тела, так что теперь она запускает ту же функцию дважды одним щелчком мыши.