jQuery复选框选中/取消选中
选择/取消选择触发我的函数的元素中的复选框的正确方法是什么 这是我的密码:jQuery复选框选中/取消选中,jquery,checkbox,Jquery,Checkbox,选择/取消选择触发我的函数的元素中的复选框的正确方法是什么 这是我的密码: <table id="news_list"> <tr> <td><input type="checkbox" name="news[1]" /></td> <td>TEXT</td> </tr></table> $("#news_list tr").click(function() { v
<table id="news_list">
<tr>
<td><input type="checkbox" name="news[1]" /></td>
<td>TEXT</td>
</tr></table>
$("#news_list tr").click(function() {
var ele = $(this).find('input');
if(ele.is(':checked')){
ele.removeAttr('checked');
$(this).removeClass('admin_checked');
}else{
ele.attr('checked', 'checked');
$(this).addClass('admin_checked');
}
});
正文
$(“#新闻列表tr”)。单击(函数(){
var ele=$(this.find('input');
如果(元素为(':选中')){
ele.removeAttr(“选中”);
$(this.removeClass('admin_checked');
}否则{
元素属性(“选中”、“选中”);
$(this.addClass('admin_checked');
}
});
问题是我只能选中和取消选中每个框一次。在我勾选和取消勾选之后,有时它仍然添加/删除类,但不再勾选复选框(即使我单击复选框,而不是表行)
我尝试使用.bind('click')触发器,但结果相同
任何解决方案?使用prop()而不是attr()来设置选中的的值。也可以在find方法中使用:复选框
,而不是输入
,并且要具体
从jQuery1.6开始,.attr()方法返回未定义的属性
这还没有确定。检索和更改DOM属性,如
表单元素的选中、选中或禁用状态使用
.prop()方法
改为使用.prop()
,如果我们使用您的代码,则进行如下比较:
看看这个例子:
变化:
将输入
更改为:复选框
比较选中复选框的长度
看这些答案,我不太确定它们是否能为您的尝试提供解决方案。我不明白为什么基本上禁用复选框是有意义的,这就是那些给定答案所做的(因为当你点击复选框时,它变成选中状态,这意味着if语句将立即取消选中它…这意味着你永远不能通过点击实际的复选框来实际选中复选框…对吗?)。这就是你想要做的吗?:@Joonas谢谢,这正是我需要的!Jai的回答对Single row有效,对multipleGood无效。不过有一件事。如果我的JSFIDLE正是您所需要的,那么我不确定Jai的答案是否适用于一行。它不允许您通过单击复选框来选中复选框,这是由于我上面解释的if语句造成的。所以我想你错过了那部分,或者。。。我仍然不知道您想要什么:)因为:checkbox是jQuery扩展,而不是CSS规范的一部分,使用:checkbox的查询无法利用本机DOM querySelectorAll()方法提供的性能提升。为了在现代浏览器中获得更好的性能,请改用[type=“checkbox”]。实际上这是正确的解决方案。接受的答案有一些问题。谢谢你的解决方案。prop
对我不起作用,但是removeAttr
和attr
使用jQuery 1.9.1。谢谢,prop为我解决了一个不同的问题,所以发现这条信息非常有用。@NickLewis欢迎你。如果这不起作用,确保编辑@PeterMortensen时元素之间的ID不重复
$("#news_list tr").click(function() {
var ele = $(this).find('input');
if(ele.is(':checked')){
ele.prop('checked', false);
$(this).removeClass('admin_checked');
}else{
ele.prop('checked', true);
$(this).addClass('admin_checked');
}
});
$("#news_list tr").click(function () {
var ele = $(this).find(':checkbox');
if ($(':checked').length) {
ele.prop('checked', false);
$(this).removeClass('admin_checked');
} else {
ele.prop('checked', true);
$(this).addClass('admin_checked');
}
});
$('mainCheckBox').click(function(){
if($(this).prop('checked')){
$('Id or Class of checkbox').prop('checked', true);
}else{
$('Id or Class of checkbox').prop('checked', false);
}
});