使用jQuery检查/取消选中复选框

时间:2012-08-13 19:31:27

标签: javascript jquery

我正在尝试使用以下代码在已选中和未选中之间切换复选框,但它似乎只是取消选中。

var checkbox = $this.find('[name="category"]');

if ('checkbox:checked') {
    checkbox.prop("checked", false);
} else {
    checkbox.prop("checked", true);
}

如何正确切换?

有没有更好的方法来做这个而不是做if / else语句? .toggle()似乎不适用于复选框正确吗?

7 个答案:

答案 0 :(得分:2)

尝试像

这样的切换功能
$('[name="category"]').toggle(
 function() { 
    $(this).find(':checkbox').prop('checked', true); },
 function() { 
    $(this).find(':checkbox').prop('checked', false);
 }); 

试试这个

   var checkbox = $this.find('[name="category"]'); 
   $checkbox.attr('checked', !$checkbox.attr('checked'));

或jquery 1.6

    $checkbox.prop('checked', !$checkbox[0].checked);

答案 1 :(得分:2)

由于它似乎只是一个元素,因此只需使用checkbox.checked

即可
var checkbox = $this.find('[name="category"]').get(0);

checkbox.checked = !checkbox.checked;

答案 2 :(得分:0)

尝试

 if (checkbox.is(':checked')) { ... }

checkbox.prop('checked', checkbox.is(':checked'));

答案 3 :(得分:0)

尝试

if (checkbox.is(':checked')) {

或者,有点复杂:

if ($this.find('[name="category"]:checked').length) {

http://api.jquery.com/checked-selector/

http://api.jquery.com/is/

答案 4 :(得分:0)

您需要重温您的IF声明。您基本上是在检查字符串'已选中:已选中'

答案 5 :(得分:0)

var checkbox = $this.find('[name="category"]');
checkbox.prop("checked", !checkbox.is(":checked") );

答案 6 :(得分:0)

试试这个:

checkbox.prop('checked', checkbox.is(':checked'));