2

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

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

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

我怎样才能让它正确切换?

有没有更好的方法来代替 if/else 语句?.toggle() 似乎不适用于复选框,对吗?

4

7 回答 7

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);
于 2012-08-13T19:33:09.350 回答
2

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

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

checkbox.checked = !checkbox.checked;
于 2012-08-13T19:36:10.790 回答
0

尝试

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

或者

checkbox.prop('checked', checkbox.is(':checked'));
于 2012-08-13T19:32:43.530 回答
0

尝试

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

或者,更复杂一点:

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

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

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

于 2012-08-13T19:32:51.143 回答
0

您需要重新审视您的 IF 语句。您基本上是在检查字符串 'checked:checked'

于 2012-08-13T19:34:34.767 回答
0
var checkbox = $this.find('[name="category"]');
checkbox.prop("checked", !checkbox.is(":checked") );
于 2012-08-13T19:35:25.727 回答
0

试试这个:

checkbox.prop('checked', checkbox.is(':checked'));
于 2012-08-13T19:35:31.063 回答