我有一个按钮在桌子上像这样
<tbody data-bind="foreach: Items">
<tr data-bind="css: { alt: $index() % 2 }">
<td style="width: 60%;" data-bind=" html: ItemName"></td>
<td data-bind=" html: Quantity"></td>
<td style="align-items: center; text-align: center;">
<input id="btnReady" type="button" value="Ready" class="button" data-bind="click: readyItem " /></td>
</tr>
</tbody>
我的观点是这样的
function MenuItem(data, hub) {
var self = this;
data = data || {};
// Persisted properties
self.Id = data.Id;
self.ItemId = data.ItemId;
self.OrderId = data.OrderId;
self.ItemName = ko.observable(data.ItemName || "");
self.Quantity = ko.observable(data.Quantity || "");
self.Notes = data.Notes || "";
self.Status = data.Status;
self.error = ko.observable();
self.hub = $.connection.postHub;
self.readyItem = function () {
self.hub.server.itemReady(self.ItemId, self.OrderId).done(function () {
$('#btnReady').attr('disabled', 'disabled');
}).fail(function (err) {
self.error(err);
});
}}
当我点击上面的按钮,然后总是第一个按钮在表中禁用。我如何禁用点击的那一个。请帮帮忙。
发布于 2013-11-01 01:48:39
尝试用以下内容替换readyItem处理程序:
self.readyItem = function (data, event) {
self.hub.server.itemReady(self.ItemId, self.OrderId).done(function () {
$(event.target).attr('disabled', 'disabled');
}).fail(function (err) {
self.error(err);
});
}}
另外,ids在页面上也是唯一的。如果有几行包含一个按钮,则不要对所有这些行使用#btnReady id。使每个按钮的id唯一,或者使用一个类。
发布于 2013-11-01 03:34:52
使用Knockout的disable
绑定而不是手动操作DOM。
在每个项目中,添加
self.isReady=ko.observable(false);
在self.readyItem
中,将DOM操作替换为
self.isReady(true);
在HTML中,添加
disable: isReady
到<input>
上的数据绑定,并删除id
属性。
https://stackoverflow.com/questions/19724246
复制