使用jquery或javascript更改所选行的背景

时间:2014-12-17 06:23:15

标签: jquery knockout.js

我想在选中该行的复选框后更改所选行的背景颜色。 我正在使用淘汰赛js。,以下功能是点击该复选框。

 self.checkBoxChecked = function (data, event) {
                if (event.currentTarget.checked) {
                    self.EmailDetailsList.push(data);
                    $(this).toggleClass("highlight");
                } else {
                    self.EmailDetailsList.pop(data);
                }
                console.log(data);
                return true;
            };

请让我知道我是否正确行事。

2 个答案:

答案 0 :(得分:0)

这里没有足够的代码可以准确地说出你在做什么,但基本上没有,如果你正在使用淘汰赛,那么你做得不对。淘汰的想法是避免在代码中操纵DOM,如$(this).toggleClass(" highlight"),而是设置viewmodel和你想要控制的DOM属性之间的绑定。然后你操纵你的viewmodel并让knockout完成它的工作。

对于这种类型的事情,您可能希望向数据添加属性,例如data.isSelected,使其成为可观察对象,并在您要添加的行的<tr>标记上:

data-bind="css: { 'highlight': isSelected }"

在复选框事件处理程序中,您将设置data.isSelected(true),并且knockout将在<tr>上设置highlight属性。

答案 1 :(得分:0)

为此,我得到了一个解决方案,

 self.checkBoxChecked = function (data, event) {
            if (event.currentTarget.checked) {
                self.EmailDetailsList.push(data);
                event.currentTarget.parentElement.parentElement.className = 'highlightRow';
                self.isSelected(true);
            }
            else {
                self.EmailDetailsList.pop(data);
                event.currentTarget.parentElement.parentElement.className = '';
                self.isSelected(false);
            }
        console.log(data);
        return true;
    } 

由于我将从我的html页面获取行信息,我将找到它的父根并为其添加一个类。这解决了我的问题。:)