我想關閉一個轉換下拉菜單,當有人在網站上的其他地方點擊。只有當它被發現是開放的。然而,下面的代碼片段似乎失火併鎖定了瀏覽器。所以我認爲我會犯這個錯誤。有沒有更好的方法來處理這個概念?jquery或javascript沿着隱藏元素,如果可見時點擊其他人的身體其他
$(document.body).click(function() {
if($('#ztsWidgetMenu').is(':visible'))
{
$('#addDashWidgetBox').click();
}
});
編輯
我做了一個功能上的click事件火了現在這兩個元素將其打開,身體點擊打電話,冒泡與不過我跑停止現在變成另一個問題。爲了打開菜單,我需要點擊至少2次meun項目才能打開菜單。如果我點擊相同的按鈕來關閉它,然後我堅持了下來開,除非我的身體點擊別的地方現在..
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
我有固定我的問題了大多數情況下,除了現在..當我點擊元素我要點燃功能顯示菜單的身體點擊註冊在同一時間,所以現在它點擊相同的功能關閉兩次。
是啊我正在計算它的冒泡也..試圖找到一種方法來彈出該泡沫並保持在控制之下 – chris
不幸的是,模擬該點擊正在觸發另一組功能.. – chris