【发布时间】:2017-03-20 20:48:00
【问题描述】:
几天来,我一直在使用淘汰赛和引导弹出框,我有一个数据表,它使用淘汰赛数据绑定显示一些信息。
<tbody data-bind="foreach: tehlist()">
<tr>
<td data-bind="text: $data.Category"></td>
<td data-bind="text: $data.Name"></td>
<td><button type="button" id="tehValue" class="btn btn-default" data-bind="text: $data.Value" style="border:none" onclick="getinfo()"></button></td>
</tr>
</tbody>
当点击 tehValue 时,它会触发一个显示随机消息的函数:
function getinfo(veh, item) {
$('#tehValue').popover({
content: 'Dana' + Math.random(),
html: true
});
}
问题是它只为第一个点击的值显示弹出窗口,而不是其他的。
有没有办法为数据绑定tehlist 的每个value 显示不同的弹出窗口?
更新
我已经改成:
<button type="button" id="tehValue" class="btn btn-default" data-bind="text: $data.Value, click: getinfo" style="border:none"></button></td>
以及功能:
getinfo = function (item, event) {
$('#tehValue').popover({
content: 'Dana' + Math.random(),
html: true
});
}
我仍然只为点击的第一个值获得弹出框。
有没有一种方法可以在不使用 Id 而只使用 getinfo 函数的 onclick 的情况下显示按钮的弹出框?
【问题讨论】:
-
您是否查看了
click绑定上的(stackoverflow)文档? stackoverflow.com/documentation/knockout.js/7101/… -
我在检查您的评论后更新了我的问题,但我仍然有同样的问题......也许与 id 有关:(
-
当然,你不能多次使用同一个id。由于
foreach使用下面的html 作为模板,它会给每个列表项相同的id。查看自定义绑定(处理 DOM 的首选方式)。如果你只是想要一个快速而肮脏的修复,你可以使用event.target(不推荐)。 -
但是,有没有一种方法可以在不使用 Id 的情况下显示按钮的弹出框,而只使用 getinfo 函数在点击时显示?
-
如果您坚持使用 viewmodel 的
getinfo方法来显示弹出窗口(这并不是真正的淘汰方式),您可以使用:$(event.target).popover({ /* options */ })
标签: javascript jquery twitter-bootstrap knockout.js