我正在尝试使用 jQuery 注册点击,并且填充似乎存在问题。
这是一个jsFiddle来帮助查看它。
我试图点击打开的菜单什么都不做,而点击其他任何地方都会关闭所有菜单。它工作得很好,但最大的问题是如果你点击上面<li>
但仍然在<div>
它失败。似乎填充不计入 div 或其他东西的一部分。
代码也在这里:
HTML
<a href="#mainMenu" class="menuLink">Main</a>
<div id="mainMenu" class="menu">
<ul>
<li class="menuItem"><a href="#">item 1</a>
</li>
<li class="menuItem"><a href="#">item 2</a>
</li>
<li class="menuItem"><a href="#">item 3</a>
</li>
<li class="menuItem"><a href="#">item 4</a>
</li>
<li class="menuItem"><a href="#">item 5</a>
</li>
</ul>
</div>
<a href="#menuTwo" class="menuLink">Menu 2</a>
<div id="menuTwo" class="menu">
<ul>
<li class="menuItem"><a href="#">item 1</a>
</li>
<li class="menuItem"><a href="#">item 2</a>
</li>
<li class="menuItem"><a href="#">item 3</a>
</li>
<li class="menuItem"><a href="#">item 4</a>
</li>
<li class="menuItem"><a href="#">item 5</a>
</li>
</ul>
</div>
JS
$(document).ready(function () {
//Attach a handler to the document for clicks.
$(document).on("click", function (e) {
//Get the click's target and convert to $ object.
$target = $(e.target);
//Find out if the click occurred on a menu.
$parents = $target.parents(".menu");
if ($parents.length > 0) {
console.log(["Menu click", e]);
return;
} else {
//If it wasn't on a menu close the open menu.
console.log(["Non-menu click", e]);
$('.menu').hide();
}
});
//Handle showing the menu.
$('.menuLink').on("click", function (e) {
//Close all other menus.
$('.menu').hide();
console.log("Started");
e.stopPropagation();
e.preventDefault();
var targetMenu = $(e.target).attr("href");
$(targetMenu).show();
});
});
CSS
#mainMenu {
background-color: lightblue;
}
#menuTwo {
background-color: lightgreen;
}
.menu {
display: none;
border: 1px solid black;
}