クリックされた行に対して何かする
- <!DOCTYPE html>
- <html lang="ja">
- <head>
- <meta charset="UTF-8">
- <title>クリックされた行に対して何かする</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.koAObj = ko.observable([ { xxx: "A123", view: ko.observable(false) },
- { xxx: "A456", view: ko.observable(false) },
- { xxx: "A789", view: ko.observable(false) } ]);
- self.koAEdit = function(obj) {
- obj.view(true);
- }
- self.koAEnd = function(obj) {
- obj.view(false);
- }
-
- // ▼選択された行が何行かを別途持たせる場合
- self.koBObj = ko.observable([ { xxx: "B123" },
- { xxx: "B456" },
- { xxx: "B789" } ]);
- self.viewTemplate = ko.observable(-1);
- self.koBEdit = function(obj) {
- self.viewTemplate(self.koBObj().indexOf(obj));
- }
- self.koBEnd = function(obj) {
- self.viewTemplate(-1);
- }
- }
-
- $(document).ready(function () {
- ko.applyBindings(new ViewModel());
- });
- </script>
- <style type="text/css">
- h2{margin:0;}
- </style>
- </head>
- <body>
- <h1>クリックされた行に対して何かする</h1>
- <div style="border:1px solid #ccc; padding:0.5em;">
- <h2>各行にフラグを持たせる場合</h2>
- <ol data-bind="foreach: koAObj">
- <li data-bind="template: {name: view() == true ? 'editA': 'viewA'}"></li>
-
- <script type="text/html" id="viewA">
- <span data-bind="text: xxx"></span>:<button data-bind="click: $root.koAEdit">編集</button>
- </script>
-
- <script type="text/html" id="editA">
- <input type="text" data-bind="value: xxx" />:<button data-bind="click: $root.koAEnd">完了</button>
- </script>
- </ol>
- </div>
- <div style="border:1px solid #ccc; padding:0.5em;margin-top:0.5em;">
- <h2>選択された行と各データのインデックス番号を比較する場合</h2>
- <ol data-bind="foreach: koBObj">
- <li data-bind="template: {name: $index() == $root.viewTemplate() ? 'editB': 'viewB'}"></li>
-
- <script type="text/html" id="viewB">
- <span data-bind="text: xxx"></span>:<button data-bind="click: $root.koBEdit">編集</button>
- </script>
-
- <script type="text/html" id="editB">
- <input type="text" data-bind="value: xxx" />:<button data-bind="click: $root.koBEnd">完了</button>
- </script>
- </ol>
- </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>