koでデータ全部の色、指定したデータの色をcheckboxで変更
- <!DOCTYPE html>
- <html lang="ja">
- <head>
- <meta charset="UTF-8">
- <title>koでデータ全部の色、指定したデータの色をcheckboxで変更</title>
- <script type="text/javascript" src="jquery-1.5.1.min.js"></script>
- <script type="text/javascript" src="knockout-2.1.0beta.js"></script>
- <script type="text/javascript">
- function ViewModel() {
- var self = this;
- self.pCol = ko.observable(true);
- self.tCol = ko.observable(true);
- self.testData = ko.observable();
- var aryData = new Array(
- {name: "ねぎ間", price: "168", taste: "味噌、ポン酢、芥子"},
- {name: "ハツ", price: "136", taste: "塩、味噌"},
- {name: "レバー", price: "136", taste: "塩、味噌、芥子"},
- {name: "ぼんちり", price: "136", taste: "塩、味噌、ポン酢、芥子"},
- {name: "はらみ", price: "136", taste: "塩、たれ、芥子"},
- {name: "うずら玉子", price: "136", taste: "味噌、芥子"},
- {name: "なんこつ", price: "136", taste: "塩、ポン酢"},
- {name: "手羽先", price: "168", taste: "塩、たれ、味噌、ポン酢、芥子"},
- {name: "せせり", price: "136", taste: "塩、味噌、芥子"},
- {name: "白レバー", price: "168", taste: "味噌、ポン酢"},
- {name: "コニク", price: "110", taste: ""},
- {name: "丸ごとシマウマ", price: "290", taste: "塩、たれ、味噌、ポン酢、芥子"}
- );
- for ( var i = 0; i<aryData.length; i++ ) {
- aryData[i].chkPrice = ko.observable(true); // CSS用のフラグ:金額
- aryData[i].chkTaste = ko.observable(true); // CSS用のフラグ:味付け
- aryData[i].pThisCol = ko.observable(true); // checkbox用:金額
- aryData[i].tThisCol = ko.observable(true); // checkbox用:味付け
- }
- self.testData(aryData);
-
- // 外にある「金額の色」のチェックボックスを押したとき
- self.pChgAllCss = function(data) {
- for ( var i = 0; i<self.testData().length; i++ ) {
- // CSSとcheckboxの変更
- self.testData()[i].chkPrice(self.pCol());
- self.testData()[i].pThisCol(self.pCol());
- }
- return true;
- };
- // 外にある「味付の色」のチェックボックスを押したとき
- self.tChgAllCss = function(data) {
- for ( var i = 0; i<self.testData().length; i++ ) {
- // CSSとcheckboxの変更
- self.testData()[i].chkTaste(self.tCol());
- self.testData()[i].tThisCol(self.tCol());
- }
- return true;
- };
- // 中にある「金額の色」のチェックボックスを押したとき
- self.pChgCss = function(data) {
- data.chkPrice(data.pThisCol());
- return true;
- };
- // 中にある「味付の色」のチェックボックスを押したとき
- self.tChgCss = function(data) {
- data.chkTaste(data.tThisCol());
- return true;
- };
- }
- $(document).ready(function () {
- ko.applyBindings(new ViewModel());
- });
- </script>
- <style type="text/css">
- .cssPrice{background-color:#ccffff;}
- .cssTaste{background-color:#ffccff;}
- </style>
- </head>
- <body>
- <h1>データ全部の色、指定したデータの色をcheckboxで変更</h1>
- <label><input type="checkbox" data-bind="checked: pCol, click: pChgAllCss" />金額の色</label>、
- <label><input type="checkbox" data-bind="checked: tCol, click: tChgAllCss" />味付の色</label><br />
- <div style="margin-top:0.5em;padding:0.5em;border:1px solid #333;">
- <table data-bind="foreach: testData()">
- <tr>
- <td data-bind="text: name"></td>
- <td data-bind="text: price, css: {'cssPrice': chkPrice()==true}"></td>
- <td data-bind="text: taste, css: {'cssTaste': chkTaste()==true}"></td>
- <td>
- <label><input type="checkbox" data-bind="checked: pThisCol, click: $root.pChgCss" />金額の色</label>
- <label><input type="checkbox" data-bind="checked: tThisCol, click: $root.tChgCss" />味付の色</label><br />
- </td>
- </tr>
- </table>
- </div>
- <div style="font-size:10pt;text-align:right;margin-top:0.5em;">
- <a href="//tips.recatnap.info/" target="_top">PCスキルの小技・忘却防止メモ</a> -
- <a href="//tips.recatnap.info/wiki/" target="_top">PCスキルの小技・忘却防止メモのまとめ(wiki)</a>
- </div>
- <div style="font-size:10pt;text-align:center;margin-top:0.5em;padding:0.5em;border-top:1px solid #ccc;">
- Copyright © 2009 by PCスキルの小技・忘却防止メモ. All rights reserved.
- </div>
- </body>
- </html>