我正在尝试使用以下代码在已选中和未选中之间切换复选框,但它似乎只是取消选中。
var checkbox = $this.find('[name="category"]');
if ('checkbox:checked') {
checkbox.prop("checked", false);
} else {
checkbox.prop("checked", true);
}
如何正确切换?
有没有更好的方法来做这个而不是做if / else语句? .toggle()似乎不适用于复选框正确吗?
答案 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) {
答案 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'));