1

在 jQuery 中编写这样的内容的最佳实践是什么?下面的脚本工作正常,但有些事情告诉我有更好的。我有一个复选框基础,它触发一个切换功能,该功能在选中时隐藏表格中的几行,反之亦然。

$("#checkboxID").change(function(){     
   $("#tableID tr.rowClass").toggle(); 
});

每当检查复选框并刷新页面时,将显示该行的显示,该行应保持隐藏。我通过添加这个脚本解决了这个问题。

if($("#checkboxID").attr("checked")){
    $("#tableID tr.rowClass").hide();
}else{
    $("#tableID tr.rowClass").show();
}
$("#checkboxID").change(function(){     
   $("#tableID tr.rowClass").toggle(); 
});

这是可以接受的还是有更好(正确)的方法。谢谢你的洞察力。

4

3 回答 3

4

为什么不简单:

$("#checkboxID").change(function(){
    var self = this;
    $("#tableID tr.rowClass").toggle(!self.checked); 
}).change();

JS 小提琴演示

使用给定的 HTML:

<label for="checkboxID">tick/untick</label>
<input type="checkbox" id="checkboxID" />
<table id="tableID">
    <tbody>
        <tr class="rowClass">
            <td>First child cell of '.rowClass'</td>
            <td>Second child cell of '.rowClass'</td>
        </tr>
        <tr>
            <td>No class for this row</td>
            <td>(Still no class)</td>
        </tr>
    </tbody>
</table>

使用 CSS,在兼容的浏览器中,您还可以使用:

input[type=checkbox]:checked ~ #tableID tr.rowClass {
    display: none;
}

JS 小提琴演示

参考:

于 2013-07-25T18:42:46.777 回答
3

这将是一个最佳实践:

$("#checkboxID").change(function(){
    $("#tableID tr.rowClass").toggle(!this.checked); 
});

这是一个工作的jsfiddle:

http://jsfiddle.net/zsal/vkvSZ/1/

于 2013-07-25T18:51:50.733 回答
0

您可以尝试使用 .is(":checked"):

if($("#checkboxID").is(":checked")){

   $("#tableID tr.rowClass").hide();

}else{

    $("#tableID tr.rowClass").show();
}
于 2013-07-25T18:37:07.210 回答