无法清除 Jquery 中的所有复选框
Can't get clear all checked boxes in Jquery
我已经尝试了几种不同的方法,但在选中所有框后,无法让代码取消选中或清除所有复选框。最新代码看起来像...
$(".select_all").click(function(){
var state = ($(this).html() == "Select All") ? true : false;
$(this).html((state) ? "Clear" : "Select All");
if ($(':checked').prop('checked', false)) {
$(':checkbox').each(function() {
this.checked = true;
});
} else {
$(':checkbox').each(function() {
this.checked = false;
});
};
})
如果我说得对,你需要这样的东西。检查下面的代码片段或此 JSFiddle。
$(".select_all").click(function(){
var state = $(this).html() == "Select All";
$(this).html((state) ? "Clear" : "Select All");
$('input:checkbox').prop('checked', state);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="" id="">
<input type="checkbox" name="" id="">
<input type="checkbox" name="" id="">
<input type="checkbox" name="" id="">
<input type="checkbox" name="" id="">
<input type="checkbox" name="" id="">
<a href="#" class="select_all">Select All</a>
根据可能的 HTML,select_all 元素可以是复选框或按钮或其他元素。我假设您处于前两种可能性之一。
$(function () {
$(".select_all").click(function(e){
e.preventDefault();
var state = ( $(this).html() == "Select All") ? true : false;
$(this).html((state) ? "Clear" : "Select All");
$(':checkbox').prop('checked', state);
});
$(".select_all1").click(function(e){
var state = ( this.nextSibling.textContent == "Select All") ? true : false;
$(':checkbox').prop('checked', state);
this.nextSibling.textContent = (state) ? "Clear" : "Select All";
});
});
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<form action="demo.asp">
<input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>
<input type="checkbox" name="vehicle" value="Car"> I have a car<br>
<input type="checkbox" name="vehicle" value="Truck"> I have a car<br>
<input type="checkbox" class="select_all1" name="selectAll" value="selectAll">Select All<br>
<input type="submit" value="Submit">
<button class="select_all">Select All</button>
</form>
$(':checked').prop('checked', false)
将属性设置为在每个复选框上false
。它不返回true/false
,所以不能用作if
中的条件。如果要测试是否没有复选框,请使用:
if ($(':checked').length == 0)
然后要选中所有框,您可以执行以下操作:
$(':checkbox').prop('checked', true);
但是实际上根本不需要做这个检查;你已经在函数顶部的state
变量中确定了它是全选还是清除。
你不需要使用 .each()
- 当选择器匹配多个元素时,所有 jQuery 函数都会自动修改 DOM 循环。
而且很少需要在三元中使用? true : false
- 您可以简单地将之前的表达式用作布尔值。
所以完整的代码是:
$(".select_all").click(function(){
var state = $(this).text() == "Select All";
$(this).text(state ? "Clear" : "Select All");
$(':checkbox').prop('checked', !state);
});
相关文章:
- 选中复选框时清除填充有datatime选取器数据的文本框
- 选中此之后剩余的复选框值.form.reset清除
- 使用 onChange 清除多个选择和复选框
- 如何使用Javascript清除基于复选框的文本框
- 清除“选中的复选框范围”值
- 取消选中复选框时隐藏和清除文本框
- jQuery UI 多选小部件清除所有复选框
- 无法清除 Jquery 中的所有复选框
- 如何在下次尝试之前从复选框中清除旧值
- jQuery清除日期选择器字段中的值,该值与未选中的复选框相关联
- 如何使用复选框取消选中来清除单选按钮
- 清除复选框按钮不起作用
- 更改单选按钮选择时清除复选框
- 如何使用javascript清除所有项目并在asp.net复选框列表中添加新项目
- 如何使用javascript保护用户清除复选框
- 如何清除复选框当选中其他复选框时?使用java脚本
- 单击“取消”按钮后清除选中的复选框
- 当标记/清除复选框时,引导复选框标签上的工具提示不会隐藏
- 切换融合表层:如何在选中新复选框时清除所有其他复选框
- 使用复选框清除表单