如何将当前元素传递给Knockout.js绑定中的Javascript函数?

时间:2014-11-25 02:13:22

标签: javascript jquery html knockout.js

所以我试图根据是否选中子复选框,使用Knockout.js为元素添加一个类。为此,我试图将this作为参数传递给我的函数。目前,我的删节DOM结构如下:

<tr data-bind="css: { selected: isRowChecked(this) }">
    <td><label><input type="checkbox"></label></td>
</tr>

我的isRowChecked函数就是这个(我使用jQuery来定位输入):

function isRowChecked(elem) {
    var checkbox = $(elem).find('input[type="checkbox"]');
    return checkbox.checked;
}

然而,如果我console.log elem我得到的是全局窗口对象。

使用jQuery完全解决这个问题是不可行的,因为我工作的项目几乎已经完全使用了淘汰赛。有什么想法吗?

1 个答案:

答案 0 :(得分:12)

您应该能够通过传递特殊绑定上下文变量$ element来实现此目的。这是最后一个变量discussed here

  

$元件

     

这是元素DOM对象(对于虚拟元素,它将是   注释当前绑定的DOM对象)。如果a,这可能很有用   绑定需要访问当前元素的属性。例如:

<div id="item1" data-bind="text: $element.id"></div>

在您的情况下,这将是这样的:

<tr data-bind="css: { selected: isRowChecked($element) }">
    <td><label><input type="checkbox"></label></td>
</tr>