http://www.webei.cn/
這個(gè)網(wǎng)站在手機(jī)屏幕大小時(shí),點(diǎn)擊菜單項(xiàng)會(huì)出現(xiàn)下拉菜單,再次點(diǎn)擊菜單項(xiàng)時(shí)會(huì)關(guān)閉下拉菜單。那如果目前下拉菜單是展開(kāi)的,我想實(shí)現(xiàn)點(diǎn)擊非菜單頁(yè)面內(nèi)容時(shí),將下拉菜單關(guān)閉如何實(shí)現(xiàn)
歡迎選擇我的課程,讓我們一起見(jiàn)證您的進(jìn)步~~
點(diǎn)擊菜單時(shí)候給菜單加個(gè)clicked標(biāo)記,body監(jiān)聽(tīng)到click事件時(shí)關(guān)閉菜單并且清除菜單按鈕的clicked標(biāo)記
$(document).bind("click",function(e){
var target = $(e.target);
if(target.closest(".menu").length == 0){//menu:菜單最子層class
$(".header-menu").hide();
}
}
$(document).bind('click', function(e) {
var e = e || window.event;
var elem = e.target || e.srcElement;
while (elem) {
//循環(huán)判斷至跟節(jié)點(diǎn),防止點(diǎn)擊的是p子元素
if (elem.id && elem.id == 'menu') {
return;
}
elem = elem.parentNode;
}
//點(diǎn)擊的不是p或其子元素
$('.menuList,.overlay').hide();
});
其實(shí)我的理解就是一個(gè)元素獲取的問(wèn)題,你給菜單按鈕綁定了一個(gè)下拉顯示的事件,給除去它之外的元素一個(gè)關(guān)閉下拉菜單的事件綁定就可以了。我看樓主的項(xiàng)目,下拉菜單是一個(gè)模態(tài)框吧?給他的外層容器元素一個(gè)點(diǎn)擊關(guān)閉事件就是你想要的了
在你html頁(yè)面最下面加上下面的代碼,測(cè)試可以
<script>
document.body.onclick=function(){
$('.navbar-collapse').collapse('hide')
}
</script>
$(document).on('click', function(e){
var $el = $('.navbar-collapse');
if ($el[0] !== e.target && !$.contains($el[0], e.target)) {
$el.hide();
}
});
$("body").click(function(){
菜單隱藏;
return flase;
//用來(lái)清除冒泡
})