我有一个 js 小提琴(位于此处),我想使用 knockout.js 来模仿它。这个想法是每个按钮都有一个相应的 div 标签。如果相应的 div 标签可见,则在单击按钮时它应该隐藏。否则,它应该显示。如果任何其他不对应的 div 是可见的,它们应该隐藏然后显示相应的 div。如何使用淘汰赛模仿这个 jQuery 版本?淘汰版的 js fiddle位于此处。它有效,但看起来仍然很冗长。似乎应该有一种方法可以使其更具活力并减少工作量。任何帮助是极大的赞赏。
<style type="text/css">
.text { background-color: lightgray; }
</style>
<script type="text/javascript">
$(document).ready(function () {
var viewModel = {
showHide1: ko.observable(false),
showHide2: ko.observable(false),
showHide3: ko.observable(false),
toggle1: function () {
this.showHide1(true);
this.showHide2(false);
this.showHide3(false);
},
toggle2: function () {
this.showHide1(false);
this.showHide2(true);
this.showHide3(false);
},
toggle3: function () {
this.showHide1(false);
this.showHide2(false);
this.showHide3(true);
}
};
ko.applyBindings(viewModel);
});
</script>
<div id="text1" class="text" data-bind="if: showHide1">Text 1</div>
<div id="text2" class="text" data-bind="if: showHide2">Text 2</div>
<div id="text3" class="text" data-bind="if: showHide3">Text 3</div>
<br />
<br />
<button id="button1" type="button" data-bind="click: toggle1">Button 1</button>
<button id="button2" type="button" data-bind="click: toggle2">Button 2</button>
<button id="button3" type="button" data-bind="click: toggle3">Button 3</button>