我正在创建一个 2 级菜单,因此单击顶部菜单项,子菜单会显示,如果单击页面的其他位置而不是子菜单本身,子菜单应该隐藏。我不倾向于向 body 标签添加点击绑定,无论如何它都不起作用,但我能做些什么来实现这一点?到目前为止,这是我的代码。
<div id="menuholder">
<ul id="topmenu">
<li data-bind="click: showMenu.bind($data, 1)">top menu item</li>
<ul class="submenu" data-bind="visible: selected() == '1'">
<li><a href="#">submenu item</a></li>
</ul>
</ul>
</div>
<script type="text/javascript">
var menuModel = function () {
var self = this;
self.selected = ko.observable(0);
self.showMenu = function (data) {
var s = self.selected();
if (s > 0 && data == s)
self.selected(0);
else
self.selected(data);
};
self.hideMenu = function () {
self.selected(0);
}
}
ko.applyBindings(new menuModel(), document.getElementById("menuHolder"));