Я создаю меню уровня 2, поэтому, щелкнув элемент topmenu, подменю появится, если щелкнуть по другим местам страницы, а не самому подменю, подменю должно скрываться. Я не склоняюсь к добавлению привязки клика к тегу 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"));
Это именно то, что я после. Работает как шарм! – walter