【问题标题】:changing colour of parent element of unchecked checkbox更改未选中复选框的父元素的颜色
【发布时间】:2013-08-01 00:00:53
【问题描述】:

我正在使用 jqGrid,那里有很多复选框,其中的值是数据库中的 puller:

<td role="gridcell" style="text-align:center;" title="" aria-describedby="schedule_1st draft ?">
    <input type="checkbox" value="0" offval="no" disabled="disabled"></td>
<td role="gridcell" style="text-align:center;" title="" aria-describedby="schedule_Art work ?">
    <input type="checkbox" value="0" offval="no" disabled="disabled"></td>
<td role="gridcell" style="text-align:center;" title="" aria-describedby="schedule_On sys ?">
    <input type="checkbox" checked="checked" value="1" offval="no" disabled="disabled"></td>

加载网格后,我想更改未选中的单元格复选框的背景颜色。我正在尝试:

if ($("input:checkbox:not(:checked)")) {
        $(this).parents().css('background-color', '#666');
    } 

但什么都没有改变。

请问有更好的建议吗?

【问题讨论】:

    标签: jquery checkbox jqgrid


    【解决方案1】:

    试试这个:

    $("input:checkbox:not(:checked)").parent().css('background-color', '#666');
    

    【讨论】:

    • 是的,那行得通...但从逻辑上讲,它与上面的代码相同吗?...谢谢
    • 并非如此。在您的代码中,您正在执行 if($(selector)) ,因为始终定义了 jQuery,所以它将始终返回 true。如果要检查元素是否存在,需要检查长度if($(selector).length)。那么,if(){} 中的$(this) 并不是元素通过条件,而是元素调用函数。最后,.parents()(带有“S”)将从元素获取每个父元素到正文。
    • 另一种更慢且代码更多的解决方案是使用 each :jsfiddle.net/8VZ4E
    【解决方案2】:

    我首先会检查$(this).parents() 在控制台中实际返回的内容(是否找到了 td 和 tr),但我的第一个想法是您可能需要查明使用 jQuery 的最接近()方法:

    $(this).closest('td').css('background-color', '#666');
    

    jQuery: closest()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2020-10-08
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多