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"));