如果选中复选框D和其他复选框,则我要选中复选框K和F。类似地,如果选中了复选框I,则将选中I的前一个复选框,并取消选中下面的复选框。我的html代码是:
<td><input type="checkbox" class= "knitting" name="knitting[]" value="1">K</td>
<td><input type="checkbox" class= "fmending" name="fmending[]" value="1">F</td>
<td><input type="checkbox" class= "dyeing" name="dyeing[]" value="1">D</td>
<td><input type="checkbox" class = "firon" name="firon[]" value="1">Y</td>
<td><input type="checkbox" class= "linking" name="linking[]" value="1">L</td>
<td><input type="checkbox" class="smending" name="smending[]" value="1">S</td>
<td><input type="checkbox" class="siron" name="siron[]" value="1">I</td>
<td><input type="checkbox" class="packing" name="packing[]" value="1">P</td>
<td><input type="checkbox" class="data" name="data[]" value="1">D</td>
<td><input type="checkbox" class="chalan" name="chalan[]" value="1">C</td>
我为此所做的是:
$(".dyeing").click(function () {
$(".knitting").prop("checked", true);
$(".fmending").prop("checked", true);
$(".firon").prop("checked", false);
$(".linking").prop("checked", false);
$(".smending").prop("checked", false);
$(".siron").prop("checked", false);
$(".packing").prop("checked", false);
$(".data").prop("checked", false);
$(".chalan").prop("checked", false);
});
这看起来很乱,还有另一个很酷的过程吗???
您可以使用:lt()和:gt()择器:
$(":checkbox").on('change',function () {
var idx=$(this).index();
$(":checkbox:lt("+idx+")").prop('checked',true);
$(":checkbox:gt("+idx+")").prop('checked',false);
});
检查下面的代码段
var idx = 0;
var chk = $('table tr :checkbox');
$("table tr :checkbox").on('change', function() {
var index = chk.index($(this));
if (idx < index) {
idx = index;
$("table tr :checkbox:lt(" + idx + ")").prop('checked', true);
$(":checkbox:gt(" + idx + ")").prop('checked', false);
} else if (idx == index && !$(this).prop('checked')) {
$(":checkbox").prop('checked', false);
} else {
idx = chk.index($(this));
$(":checkbox:lt(" + idx + ")").prop('checked', true);
$(this).prop('checked', true);
$(":checkbox:gt(" + idx + ")").prop('checked', false);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>
<input type="checkbox" class="knitting" name="knitting[]" value="1">K</td>
<td>
<input type="checkbox" class="fmending" name="fmending[]" value="1">F</td>
<td>
<input type="checkbox" class="dyeing" name="dyeing[]" value="1">D</td>
<td>
<input type="checkbox" class="firon" name="firon[]" value="1">Y</td>
<td>
<input type="checkbox" class="linking" name="linking[]" value="1">L</td>
<td>
<input type="checkbox" class="smending" name="smending[]" value="1">S</td>
<td>
<input type="checkbox" class="siron" name="siron[]" value="1">I</td>
<td>
<input type="checkbox" class="packing" name="packing[]" value="1">P</td>
<td>
<input type="checkbox" class="data" name="data[]" value="1">D</td>
<td>
<input type="checkbox" class="chalan" name="chalan[]" value="1">C</td>
</tr>
</tbody>
</table>
你可以做,
$("input[type='checkbox']").click(function() {
if (this.checked)
$("td:lt(" + $(this).closest("td").index() + ") input[type='checkbox']").prop("checked", this.checked);
});
Fiddle
**EDIT:如果您不想只选中/取消选中连续的复选框,但可以根据单击的复选框来选中/取消复选任何复选框,则此解决方案非常有用。
是的,您可以在复选框中添加多个类,例如dyeingfalse、knotingtrue等。此外,为每个复选框指定一个数据属性,例如data name="dying"。
现在,
$("input[type=checkbox]").on("click", function(){
if( $(this).is(":checked") )
{
var name = $(this).attr("data-name");
$("input."+name+"false").prop("checked", false);
$("input."+name+"true").prop("checked", true);
}//if
});//click handler