如何使用jquery一键检查复选框(3)
在这里,我有一堆复选框,
比方说,如果我点击任何复选框,我还要勾选下两个复选框(即旁边两个)
小提琴
任何人都可以帮助我
提前致谢。
试试这个它有你想要的切换效果。
这是脚本:
$(':checkbox').click(function () { if ($(this).is(":checked")) { $(this).parent().nextAll("td").slice(0, 2).find(":checkbox").prop('checked', true); } else { $(this).parent().nextAll("td").slice(0, 2).find(":checkbox").prop('checked', false); } });
这是工作DEMO
尝试使用nextAll()
和eq
来选择下两个。
$('input:checkbox').change(function(){ var obj=$(this).parent().nextAll(':eq(0),:eq(1)'); //eq(0) and (1) is the index of next two checkbox obj.find(':checkbox').prop('checked',this.checked) });
在这里小提琴
如果未选中,则取消选中该复选框。
$(":checkbox").click(function () { $(this).parent().nextAll("td").slice(0, 2).find(":checkbox").prop('checked', true); });
的jsfiddle
或试试这个
var len = 2; var selector = 'input:checkbox'; $(selector).click(function(){ var e = $(selector).index(this); $(selector+':lt('+(e+len+1)+'):gt('+e+')') .attr('checked', 'checked'); });
的jsfiddle
试试这个
我在每个tr
上添加了按钮
$('button').on('click', function () { $(this).parents('tr').find('td>input[type=checkbox]').each(function (i, j) { if (i == 3) { return false; } $(this).prop('checked', true); }) })
的jsfiddle
香草JS解决方案:
var checkboxes = document.querySelectorAll('input[type="checkbox"]'); for(var i=0,iLen=checkboxes.length; i
的jsfiddle
一种不同的方法。 不使用DOM,而是使用输入元素的数组。
也适用于第一个和最后一个元素 (如果你想要这个,你没有指定)。
$('input').change(function () { var i = $.inArray(this, $('input')); var n = i + 1; var p = i - 1; if (n >= $('input').length) n = 0; if (p < 0) p = $('input').length - 1; $('input').eq(n).attr("checked", $(this).attr('checked') ? true : false); $('input').eq(p).attr("checked", $(this).attr('checked') ? true : false); });
试试这个工作脚本
$('input[type="checkbox"]').click(function(obj){ if( $(this).is(':checked')) { $(this).parent().nextAll().has(":checkbox").eq(0).find(":checkbox").attr('checked','checked'); $(this).parent().nextAll().has(":checkbox").eq(1).find(":checkbox").attr('checked','checked'); }else{ $(this).parent().nextAll().has(":checkbox").eq(0).find(":checkbox").removeAttr('checked'); $(this).parent().nextAll().has(":checkbox").eq(1).find(":checkbox").removeAttr('checked'); } });
DEMO
$(':checkbox').click(function(){ $(this).parent().nextAll().slice(0,2).find(":checkbox").attr('checked',this.checked) })
使用jquery的另一个解决方案:
$('input').on('click', function () { var count=0; $.each($(this).parents('tr').find('td>input[type=checkbox]'), function( index, value ) { if($(value).is(":checked")){ count++; } else if(count > 0 && count <= 2){ $(value).attr('checked', true); count++; } }); })
的jsfiddle