使用jQuery切换时,复选框未被选中

5

当我使用jquery的toggle函数时,我希望复选框被勾选。如果我使用.bind('click'),这个方法可以正常工作。

$('#chkb').toggle(function () {

    $('#va').text("checked");
    $('#chkb').attr('checked', 'checked');

}, 
function () {

    $('#chkb').attr('checked', 'false');
    $('#va').text("");

});

html

<input type="checkbox" id="chkb" />

我该如何完成它。

谢谢 Jean


这个怎么样:var apchk = '<input type=checkbox checked="checked" id="chkb">'; $('#c').html(apchk); - X10nD
2个回答

2
chkb = $('#chkb');
va = $('#va');

chkb.change(function () {
   va.text(chkb[0].checked ? "checked" : "");
});

将选择器缓存到变量中可以加快速度 - 不必每次搜索dom。将chkb放入变量中意味着它可以在jQuery的其他地方使用,而不是使用this


1
+1 ^_^ 有一个评论。虽然jQuery可以帮助你很多,但不要滥用它。chkb[0].checkedchkb.is(':checked')更快。干杯! - Reigel Gallarde
是的,点个踩并不能帮到你。 ;) 只需要一些解释,我们就都会开心。 ;) - Reigel Gallarde

1

你真的需要在代码中 checked 它吗?(我有什么遗漏的吗?当复选框被点击时,它已经切换了它的 checked 属性值。)

更好的方法是使用 change,像这样:

$('#chkb').change(function () {
    var self = this;
    $('#va').text(function(i,text){
        return self.checked?"checked":"";
    });
})

1
你也可以使用键盘选中复选框。 - ZeissS
@Jean - 为什么?怎么回事? - Reigel Gallarde
是的,它起作用了。现在我有另一个问题,$('#va').text(""); 不起作用。我把复选框放在<div></div>之间并使用了 .html()。 - X10nD
你发布了一些不起作用的代码 - 这有什么大不了的?好吧,现在已经删除了,但当时它被呈现为有效的可工作代码。如果这不值得一个踩的话,我就不知道什么是值得的了。 - NimChimpsky
1
@Jean - 关于复选框的 .toggle(),请阅读此文:https://dev59.com/SFDTa4cB1Zd3GeqPMtpb - Reigel Gallarde
显示剩余13条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接