您尝试检查/取消选中没有给他们上课的所有复选框。这是我得到的代码,但它检查了类框。
$(document).ready(function() {
$('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(
function() {
if (!$("input[type='checkbox']").hasClass("testclass")) {
$("input[type='checkbox']").attr('checked', $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').is(':checked'));
}});
});
我出错的任何想法?
修改
这很糟糕但asp.net在给出cssclass时在复选框输入周围添加了一个span,所以复选框本身不会得到类。我试着像你说的那样,但是喜欢.not(thecheckboxid),但没有运气。
编辑代码
<span class="testclass"><input id="ctl00_ContentPlaceHolder1_chxMale" type="checkbox" name="ctl00$ContentPlaceHolder1$chxMale" /></span>
答案 0 :(得分:3)
您需要稍微修改一下代码(针对更新的问题进行了更新):
$(function() {
$('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(function() {
$(":not(.testclass) > input[type='checkbox']").attr('checked', this.checked);
});
});
目前,您正在检查第一个匹配的复选框是否包含该类,您要过滤掉所有那些没有该类的人,而您正在设置{ {1}}属性。有几种方法可以做到这一点,但:not()
或.not()
是最简单的方法。上面的另一个变化是,因为你在checked
复选框的事件处理程序中,你可以使用_chxAll
而不是重复ID,它更短更快:)使用这个你可以使用{ {3}} DOM属性。
答案 1 :(得分:3)
我添加了一些急需的性能改进。
var inputs = $('input:checkbox').not('.testclass');
$('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(
function() {
inputs.attr('checked', this.checked);
}
);
答案 2 :(得分:1)
$('input:checkbox').not('.testclass').attr('checked', $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').is(':checked'));