目标的方向>
只使用一个具有asdf类的复选框,通过将背景颜色更改为黄色来启用该复选框以选择行。复选框的剩余部分(右侧)不能将背景颜色更改为黄色
在简短的摘要中,第二个和第三个复选框不应该执行任何操作。
障碍>
我面临的问题是不知道如何解决它。
如果可能的话,不要改变html的结构,因为它现在在生产阶段使用。
http://jsfiddle.net/oc1n1c49/2/
谢谢!
$("#candy input[type=checkbox]").on("change", function () {
if (this.checked) {
$(this).parents('tr').addClass('selected');
$('#dd').removeClass('selected');
} else {
$('#bbbbbb').prop('checked', false);
$(this).parents('tr').removeClass('selected');
$('#dd').removeClass('selected');
}
});
$('#bbbbbb').click(function () {
var checked = $("#bbbbbb").is(':checked');
$(".asdf").each(function () {
$(this).prop('checked', checked);
if (checked) {
$(this).parents('tr').addClass('selected');
$('#dd').removeClass('selected');
}
else {
$(this).parents('tr').removeClass('selected');
$('#dd').removeClass('selected');
}
});
});

tr.selected {
background-color: #FEF0BF;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<table id="candy" >
<tr id="dd">
<th><input type="checkbox" id="bbbbbb" /></th>
<th width="20">a</th>
<th width="20">b</th>
<th width="20">c</th>
<th width="20"">d</th>
<th width="20">e</th>
<th width="20">f</th>
<th width="20">g</th>
<th width="20">h</th>
</tr>
<tr>
<td><input type="checkbox" class="asdf" /></td>
<td>v</td>
<td>v</td>
<td>v</td>
<td>v</td>
<td>v</td>
<td>v</td>
<td>v</td>
<td><input type="checkbox" /></td>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" class="asdf" /></td>
<td>e</td>
<td>e</td>
<td>e</td>
<td>e</td>
<td>e</td>
<td>e</td>
<td>e</td>
<td><input type="checkbox" /></td>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" class="asdf" /></td>
<td>q</td>
<td>q</td>
<td>q</td>
<td>q</td>
<td>q</td>
<td>q</td>
<td>q</td>
<td><input type="checkbox" /></td>
<td><input type="checkbox" /></td>
</tr>
</table>
&#13;
答案 0 :(得分:1)
对于您的选择器,只需选择第一个文本框的特定类,而不是像这样的所有文本框
$('#candy .asdf').on('change' function(){
//your code
});
答案 1 :(得分:0)
要加强@Binvention的答案,您可以使用退出选择器并添加该类。如果类asdf
也用于其他元素而不仅仅是输入
$("#candy input[type=checkbox].asdf").on("change", function () {
...
});
此外,如果该类不存在,那么您可以使用以下>每个列的第一个行中选择 first 复选框
$("#candy tr > td:first-of-type > input[type=checkbox]:first-of-type").on("change", function () {
...
});
虽然我怀疑这会更有效率,然后直接定位该类,并且如果复选框的位置发生变化,那么此选择器将会中断。如果你有,我建议你使用这个课程。
答案 2 :(得分:0)
如果我理解你,那就行了。您只选择类'asdf'的复选框,并更改该复选框所在行的背景颜色。 该行中的其他两个复选框不执行任何操作。
$('.asdf').on('change', function(){
if($(this).attr("checked") == 'checked')
$(this).parent().parent().css('backgroundColor', '#ff0');
else
$(this).parent().parent().css('background', 'none');
});