我有以下几点:

$(document).ready(function()
{
    $("#select-all-teammembers").click(function() {
        $("input[name=recipients\\[\\]]").attr('checked', true);
    });                 
});

我希望id="select-all-teammembers"在选中和未选中之间切换。想法吗?那不是几十行代码吗?


当前回答

我知道这是老问题,但这个问题有点模棱两可,因为toggle可能意味着每个复选框都应该切换其状态,无论它是什么。如果有3个选中,2个未选中,那么切换将使前3个未选中,最后2个选中。

为此,这里的解决方案都不起作用,因为它们使所有复选框具有相同的状态,而不是切换每个复选框的状态。对多个复选框执行$(':checkbox').prop('checked')将在所有.checked二进制属性之间返回逻辑与,即如果其中一个未选中,则返回值为false。

你需要使用.each()如果你想实际切换每个复选框的状态,而不是使它们都相等,例如。

   $(':checkbox').each(function () { this.checked = !this.checked; });

请注意,在处理程序中不需要$(this),因为.checked属性存在于所有浏览器中。

其他回答

我认为触发点击更简单:

$("#select-all-teammembers").click(function() {
    $("input[name=recipients\\[\\]]").trigger('click');
});                 

此代码将在单击web模板中使用的任何拨动开关动画器时拨动复选框。取代”。Onoffswitch-label”在你的代码中可用。 "checkboxID"是这里被切换的复选框。

$('.onoffswitch-label').click(function () {
if ($('#checkboxID').prop('checked')) 
 {
   $('#checkboxID').prop('checked', false);
 }
else 
 {
   $('#checkboxID').prop('checked', true);
 }
});

假设它是一个必须切换复选框的图像,这对我来说是可行的

<img src="something.gif" onclick="$('#checkboxid').prop('checked', !($('#checkboxid').is(':checked')));">
<input type="checkbox" id="checkboxid">

从jQuery 1.6开始,你可以使用.prop(function)来切换每个找到的元素的检查状态:

$("input[name=recipients\\[\\]]").prop('checked', function(_, checked) {
    return !checked;
});

你也可以这样写

$(function() {
    $("#checkbox-toggle").click(function() {
        $('input[type=checkbox][name=checkbox_id\\[\\]]').click();
    });
});

当用户单击id为“#checkbox-toggle”的按钮时,只需要调用复选框的单击事件。