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

How can I pass the current element to a Javascript function in a Knockout.js binding?

本文关键字:绑定 js Knockout 函数 Javascript 元素      更新时间:2023-09-26

所以我正在尝试使用 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来完全解决这个问题是不可行的,因为我正在从事的项目已经几乎只使用KNOCKOUT。有什么想法吗?

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

$element

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

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

在您的情况下,这看起来像这样:

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