我有一系列复选框,通过ajax一次加载100个。
我需要这个jquery允许我按下按钮时检查屏幕上的所有内容。如果加载了更多,并按下了按钮,可能会关闭所有关闭,然后再次按下以切换所有关闭。
这就是我所拥有的,显然它不适合我。
$(function () {
$('#selectall').click(function () {
$('#friendslist').find(':checkbox').attr('checked', this.checked);
});
});
按钮为#selectall
,复选框为类.tf
,它们都位于名为#check
的父div中,位于名为#friend
的div中,位于div叫#friendslist
示例:
<div id='friendslist'>
<div id='friend'>
<div id='check'>
<input type='checkbox' class='tf' name='hurr' value='durr1'>
</div>
</div>
<div id='friend'>
<div id='check'>
<input type='checkbox' class='tf' name='hurr' value='durr2'>
</div>
</div>
<div id='friend'>
<div id='check'>
<input type='checkbox' class='tf' name='hurr' value='durr3'>
</div>
</div>
</div>
<input type='button' id='selectall' value="Select All">
答案 0 :(得分:56)
我知道我正在重新审视一个旧帖子,但在提出此问题时,此页面会显示为Google中的最佳结果之一。我正在重新审视这个,因为在jQuery 1.6及更高版本中,prop()应该用于“已检查”状态,而不是attr(),传递true或false。更多信息here。
例如,Henrick的代码现在应该是:
$(function () {
$('#selectall').toggle(
function() {
$('#friendslist .tf').prop('checked', true);
},
function() {
$('#friendslist .tf').prop('checked', false);
}
);
});
答案 1 :(得分:12)
$('#friendslist .tf')
此选择器将满足您的需求
答案 2 :(得分:11)
使用jquery切换功能。然后,您还可以执行您可能想要执行的任何其他更改以及这些更改...例如更改按钮的值以说“全部检查”或“取消全部检查”。
$(function () {
$('#selectall').toggle(
function() {
$('#friendslist .tf').attr('checked', 'checked');
},
function() {
$('#friendslist .tf').attr('checked', '');
}
);
});
答案 3 :(得分:7)
非常简单地检查/取消选中所有内容而无需循环
<input type="checkbox" id="checkAll" /> Check / Uncheck All
<input type="checkbox" class="chk" value="option1" /> Option 1
<input type="checkbox" class="chk" value="option2" /> Option 2
<input type="checkbox" class="chk" value="option3" /> Option 3
javascript(jQuery)在复选框值
上计算“未定义”** 更新 - 使用.prop() **
$("#checkAll").change(function(){
var status = $(this).is(":checked") ? true : false;
$(".chk").prop("checked",status);
});
** 之前的建议 - 可能无效 **
$("#checkAll").change(function(){
var status = $(this).attr("checked") ? "checked" : false;
$(".chk").attr("checked",status);
});
或者使用.prop()组合成一行
的下一篇文章的建议$("#checkAll").change(function(){
$(".chk").attr("checked",$(this).prop("checked"));
});
答案 4 :(得分:6)
这就是我切换复选框的方式
$(document).ready(function() {
$('#Togglebutton').click(function() {
$('.checkBoxes').each(function() {
$(this).attr('checked',!$(this).attr('checked'));
});
});
});
答案 5 :(得分:5)
也许试试这个:
$(function () {
$('#selectall').click(function () {
$('#friendslist .tf').attr('checked', this.checked);
});
});
答案 6 :(得分:2)
<div class="control-group">
<input type="checkbox" class="selAllChksInGroup"> All
<input type="checkbox" value="NE"> Nebraska
<input type="checkbox" value="FL"> Florida
</div>
$(document).ready(function(){
$("input[type=checkbox].selAllChksInGroup").on("click.chkAll", function( event ){
$(this).parents('.control-group:eq(0)').find(':checkbox').prop('checked', this.checked);
});
});
答案 7 :(得分:2)
我无法让最后一个例子为我工作。查询复选框状态的正确方法显然是:
var status = $(this).prop("checked");
而不是
var status = $(this).attr("checked") ? "checked" : false;
如上所述。
答案 8 :(得分:1)
假设#selectall
是一个复选框本身,其状态是否要复制到所有其他复选框?
$(function () {
$('#selectall').click(function () {
$('#friendslist input:checkbox').attr('checked', $(this).attr('checked'));
});
});
答案 9 :(得分:1)
试试这个
var checkAll = function(){
var check_all = arguments[0];
var child_class = arguments[1];
if(arguments.length>2){
var uncheck_all = arguments[2];
$('#'+check_all).click(function (){
$('.'+child_class).attr('checked', true);
});
$('#'+uncheck_all).click(function (){
$('.'+child_class).attr('checked', false);
});
$('.'+child_class).click(function (){
var checkall_checked = true;
$('.'+child_class).each(function(){
if($(this).attr('checked')!=true){
checkall_checked = false;
}
});
if(checkall_checked == true){
$('#'+check_all).attr('checked', true);
$('#'+uncheck_all).attr('checked', false);
}else{
$('#'+check_all).attr('checked', false);
$('#'+uncheck_all).attr('checked', true);
}
});
}else{
$('#'+check_all).click(function (){
$('.'+child_class).attr('checked', $(this).attr('checked'));
});
$('.'+child_class).click(function (){
var checkall_checked = true;
$('.'+child_class).each(function(){
if($(this).attr('checked')!=true){
checkall_checked = false;
}
});
$('#'+check_all).attr('checked', checkall_checked);
});
}
};
“全部检查”和“取消全部选中”是同一个复选框
checkAll(“checkall_id”,“child_checkboxes_class_name”);
“全部检查”和“取消全部选中”是单独的复选框
checkAll(“checkall_id”,“child_checkboxes_class_name”,“uncheckall_id”);
答案 10 :(得分:1)
你可以试试这个:
$(function () {
$('#selectall').click(function () {
$('#friendslist input:checkbox').attr('checked', checked_status);
});
});
// checked_status = true / false - 视情况而定,或通过变量设置
答案 11 :(得分:1)
只需将this.checked更改为“已检查”,它对我(IE,Safari,Firefox)有效。
$(function() {
$('#selectall').click(function() {
$('#friendslist').find(':checkbox').attr('checked', 'checked');
});
});
答案 12 :(得分:1)
以下是我如何实现它。
function SelectAllCheckBoxes();
{
$('#divSrchResults').find(':checkbox').attr('checked', $('#chkPrint').is(":checked"));
}
以下内容触发了上述行。
<input type=checkbox id=chkPrint onclick='SelectAllCheckBoxes();' />
点击chkPrint后,网格中的每个复选框都会显示divSrchResults&#39;根据chkPrint的状态,选中或取消选中。
当然,如果您需要高级功能,例如在取消选中其他每个复选框时取消选中标题复选框,则需要为此编写另一个功能。
答案 13 :(得分:1)
所以“检查”是一个糟糕的属性;在许多浏览器中,它不能按预期工作:-(尝试做:
$('#friendslist').find(':checkbox')
.attr('checked', this.checked)
.attr('defaultChecked', this.checked);
我知道设置“defaultChecked”没有任何意义,但试试看它是否有帮助。
答案 14 :(得分:1)
我创建了一个我在所有项目中使用的函数。这只是初稿,但也许会有所帮助:
功能:
function selectAll(wrapperAll, wrapperInputs) {
var selectAll = wrapperAll.find('input');
var allInputs = wrapperInputs.find('input');
console.log('Checked inputs = ' + allInputs.filter(':not(:checked)').length);
function checkitems(allInputs) {
//If all items checked
if (allInputs.filter(':not(:checked)').length === 0) {
console.log('Function: checkItems: All items checked');
selectAll.attr('checked', true);
} else {
console.log('Function: checkItems: Else all items checked');
selectAll.attr('checked', false);
}
}
checkitems(allInputs);
allInputs.on('change', function () {
checkitems(allInputs)
});
selectAll.on('change', function () {
if (this.checked) {
console.log('This checkbox is checked');
wrapperInputs.find(':checkbox').attr('checked', true);
} else {
console.log('This checkbox is NOT checked');
wrapperInputs.find(':checkbox').attr('checked', false);
}
});
}
它接受输入被包装的2个参数,你可以这样使用 - 就像这样:
$(function () {
var wrapperAll = $('.selectallinput');
var wrapperInputs = $('.inputs');
selectAll(wrapperAll, wrapperInputs);
});
答案 15 :(得分:0)
<input type="checkbox" onclick="toggleChecked(this.checked)"> Select / Deselect All
Now here are two versions of the toggleChecked function dependent on the semantics of your document. The only real difference is the jQuery selector for your list checkboxes:
1: All checkboxes have a class of “checkbox” (<input type=”checkbox” class=”checkbox” />)
function toggleChecked(status) {
$(".checkbox").each( function() {
$(this).attr("checked",status);
})
}
2: All the checkboxes are contained within a div with an arbitary id:
<div id="checkboxes">
<input type="checkbox" />
<input type="checkbox" />
<input type="checkbox" />
</div>
In this case the function would look like this:
function toggleChecked(status) {
$("#checkboxes input").each( function() {
$(this).attr("checked",status);
})
Have fun!
答案 16 :(得分:0)
这可能适用于(已选中/未选中) selectall 情况:
$(document).ready(function(){
$('#selectall').click(function () {
$("#friendslist .tf").attr("checked",function(){return $(this).attr("checked") ? false : true;});
});
});
答案 17 :(得分:0)
currently accepted answer不适用于jQuery 1.9+。在该版本中删除了(相当多)重载.toggle()
函数的事件处理方面,这意味着尝试调用.toggle(function, function)
只会切换元素的显示状态。
我建议做这样的事情:
$(function() {
var selectAll = $('#selectall');
selectAll.on('click', function(e) {
var checked = !(selectAll.data('checked') || false);
$('#friendslist .tf').prop('checked', checked);
selectAll.data('checked', checked);
});
});
使用常规点击事件处理程序,加上数据属性来跟踪“切换”状态,并在每次点击时将其反转。
答案 18 :(得分:0)
这是我编写的基本jQuery插件,它选择页面上的所有复选框,但用作切换的复选框/元素除外。当然,这可以根据您的需要进行修改:
(function($) {
// Checkbox toggle function for selecting all checkboxes on the page
$.fn.toggleCheckboxes = function() {
// Get all checkbox elements
checkboxes = $(':checkbox').not(this);
// Check if the checkboxes are checked/unchecked and if so uncheck/check them
if(this.is(':checked')) {
checkboxes.prop('checked', true);
} else {
checkboxes.prop('checked', false);
}
}
}(jQuery));
然后只需在复选框或按钮元素上调用该函数:
// Check all checkboxes
$('.check-all').change(function() {
$(this).toggleCheckboxes();
});
当您通过AJAX添加和删除更多复选框时,您可能希望使用此而不是.change():
// Check all checkboxes
$(document).on('change', '.check-all', function() {
$(this).toggleCheckboxes();
});