-2

我正在尝试将以下 CSS 应用于给定 div ID 下的多个 div。

.strikeout
{
    background : blue;
}

我正在使用以下 javascript 代码来更改网格中所选行的颜色,

$("#jqxGridInvoiceEntry").on("cellvaluechanged", function (event){
    var rowindex = event.args.rowindex;
    var checkboxState=event.args.value;
    var rowTag=$("#row"+rowindex+"jqxGridInvoiceEntry div");

    if(checkboxState==true)
    {
        rowTag.addClass("strikeout");
    }
    else
    if(checkboxState==false)
    {
        rowTag.removeClass("strikeout");
    }
});  

请参阅下面的屏幕截图。当我选择第一行中的复选框时,其背景颜色变为蓝色。问题是当我选择第二行中的复选框时,它的背景颜色变为蓝色,但之前选择的行的背景颜色消失了。第一行 ID 将是 row0jqxGridInvoiceEntry 等后续行。

在此处输入图像描述

我正在使用 JQWidgets 框架。HTML代码是,

<div style="float: left;" id="jqxGridInvoiceEntry"></div>
4

4 回答 4

0

从您发布的代码来看,唯一的可能性是该cellvaluechanged事件也会针对第一行触发,可能是因为当您选中第 2 行中的另一个复选框时,其中的复选框未选中。

这段代码:

else
if(checkboxState==false)
{
    rowTag.removeClass("strikeout");
}

将删除背景颜色。

于 2014-06-11T08:14:32.203 回答
0

我认为 jquery 实现的方式有点令人困惑。在这里,我将采用不同的方式来实现相同的结果。

HTML

 <table cellpadding="0" cellspacing="0" border="0" width="100%" id="MainTable">
<tr>
    <td>First</td> 
    <td><input type='checkbox'  /></td>
    <td>Some INformation</td>
    <td>Testing</td>
</tr>
<tr>
    <td>Second</td> 
    <td><input type='checkbox' /></td>
    <td>Some INformation</td>
    <td>Testing</td>
</tr>
<tr>
    <td>Third</td> 
    <td><input type='checkbox' /></td>
    <td>Some INformation</td>
    <td>Testing</td>
</tr>
</table>

CSS

 table
 {
 border-top:1px solid #000;
 border-right:1px solid #000;
 }
 table td
 {
border-bottom:1px solid #000;
 border-left:1px solid #000;
 }
 .green
{
  background-color:green;
 }

查询

 $('#MainTable input[type=checkbox]').on('click',function(){
    $(this).parent().toggleClass('green').siblings().toggleClass('green');
  });

工作 JSFIDDLE 演示

于 2014-06-11T08:39:08.527 回答
-1

在我看来,当您的回调结束时,您的页面会重新加载。

如果发现这个。他们说你应该使用 preventDefault() 来禁止这种行为。希望能帮助到你

于 2014-06-11T08:04:17.117 回答
-1

.strikeout .otherdivClass .thirdCssClass { 背景:蓝色;}

于 2014-06-11T08:04:29.613 回答