Javascript jQuery:禁用除当前复选框之外的所有复选框
我有一些复选框,它们需要以类似于单选按钮控件的方式进行操作。基本上,当一个被选中时,所有其他的都需要被取消选中。我如何在尽可能少的痛苦下实现这一点 总结一下。如果选中某个复选框,则必须取消选中所有其他(同级)复选框,使单击的一个复选框状态保持不变Javascript jQuery:禁用除当前复选框之外的所有复选框,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,我有一些复选框,它们需要以类似于单选按钮控件的方式进行操作。基本上,当一个被选中时,所有其他的都需要被取消选中。我如何在尽可能少的痛苦下实现这一点 总结一下。如果选中某个复选框,则必须取消选中所有其他(同级)复选框,使单击的一个复选框状态保持不变 我已经知道如何取消选中所有复选框,但如果我这样做,我必须首先存储选中复选框的选中状态,然后在取消选中所有复选框后重新应用它。我想知道是否有一种方法可以使用一些奇特的jQuery选择器或类似的工具来实现这一点。使用单选按钮。说真的,单选按钮的存在是有原因
我已经知道如何取消选中所有复选框,但如果我这样做,我必须首先存储选中复选框的选中状态,然后在取消选中所有复选框后重新应用它。我想知道是否有一种方法可以使用一些奇特的jQuery选择器或类似的工具来实现这一点。使用单选按钮。说真的,单选按钮的存在是有原因的。人们期望单选按钮是“n取1”选择,复选框是“0到n”选择 不管怎样,代码如下:
$('input:checkbox').click(function() {
$(this).siblings('input:checkbox').removeAttr('checked');
});
演示:
但是,请仅在您确实需要允许用户取消选中所有内容时使用它。那么它是可以接受的-否则单选按钮会更好。试试这个:
$(':checkbox').not( selector_for_current ).attr('checked', false);
$(function() {
$("input[type=checkbox]").click(function(){
$(this).siblings("input[type=checkbox]:not(this)").attr("checked", "");
});
});
其中,selector\u for\u current
是“current one”,如果您在回调中,通常是this
。尝试以下方法:
$(':checkbox').not( selector_for_current ).attr('checked', false);
$(function() {
$("input[type=checkbox]").click(function(){
$(this).siblings("input[type=checkbox]:not(this)").attr("checked", "");
});
});
请参阅。作为ThiefMaster非常好的回答的替代方法,您可以在父窗体上注册事件并捕获所有复选框,包括嵌套在字段集中(或其他元素)的复选框,这些复选框将使用“兄弟”忽略
演示:check我知道怎么做,我真的在寻找比存储原始复选框的状态然后重新应用它更好的方法。我确信他使用这些复选框是有充分理由的。这真的是一个评论,而不是一个答案。-我的-1感谢你最终的帮助。我在发布“评论”半分钟后就把答案包括进去了。;)谢谢你的建议,但这是不合适的使用它们为我的工作application@Thief不需要
。不需要(这个)
。this
元素不是$(this)的一部分。兄弟姐妹()
。我需要使用$(this)
还是只使用this
就足够了,因为它在jQuery函数中?让它工作起来了-很棒的代码谢谢-这正是我想要的this
是DOM元素(在事件处理程序等内部),$(this)
是jQuery对象。作为.not()
参数,DOM元素是非常好的。