ノックアウト.jsを使用して模倣したいjsフィドル(ここにあります)があります。各ボタンには対応する div タグがあるという考え方です。対応する div タグが表示されている場合は、ボタンをクリックすると非表示になります。それ以外の場合は、表示されるはずです。他の対応しない div が表示されている場合は、非表示にしてから対応する div を表示する必要があります。ノックアウトを使用してこの jQuery バージョンを模倣するにはどうすればよいですか? ノックアウト バージョンの js フィドルはここにあります。動作しますが、それでも非常に冗長に見えます。より動的にして作業量を減らす方法があるはずです。どんな助けでも大歓迎です。
<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>