我有一个js fiddle(位于这里),我想用knockout.js模仿它。每个按钮都有一个对应的div标签。如果相应的div标签可见,则在单击按钮时应将其隐藏。否则,它应该显示出来。如果其他任何不相关的div可见,它们应该隐藏,然后显示相应的div。我如何使用knockout来模仿这个jQuery版本? knockout版本的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>