【发布时间】:2013-01-24 00:46:29
【问题描述】:
选中/取消选中放置在触发我的功能的元素内的复选框的正确方法是什么?
这是我的代码:
<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');
}
});
问题是我只能选中和取消选中每个框一次。在我选中和取消选中后,有时它仍然会添加/删除类,但再也不会选中一个框(即使我点击复选框,而不是表格行)。
我尝试过使用 .bind('click') 触发器,但结果相同。
有什么解决办法吗?
【问题讨论】:
-
查看答案,我不太确定他们是否为您尝试做的事情提供了解决方案。我不明白为什么基本上禁用复选框是有意义的,这就是那些给出的答案正在做的事情(因为当您单击复选框时,它会被选中,这意味着 if 语句将立即取消选中它......这意味着你永远不能通过单击实际的复选框来实际检查复选框......对吗?)。这是你想做的吗?:jsfiddle.net/7gbhf
-
@Joonas 谢谢,这正是我所需要的! Jai 的回答确实适用于单行,而不是多行
-
好。不过有一件事。如果我的 jsfiddle 正是您所需要的,我不确定我是否看到 Jai 的答案对一行有效。它不允许您通过单击复选框来选中复选框,这是由于我上面解释的 if 语句。所以我认为你错过了那部分,或者......我仍然不知道你想要什么:)