Javascript JQuery没有';t选择并更改复选框的状态
这是html:Javascript JQuery没有';t选择并更改复选框的状态,javascript,jquery,html,parent-child,Javascript,Jquery,Html,Parent Child,这是html: <div class="btn btn-stock-report" id="superman"> Superman <input type="checkbox" name="superman" /> </div> 我试图实现的只是更改子复选框的状态并更改superman变量的值,但出于某种原因,它总是在控制台日志中打印出superman:false。即使我手动选中复选框并单击div,即使现在选中了复选框,它也会报告superman:f
<div class="btn btn-stock-report" id="superman">
Superman <input type="checkbox" name="superman" />
</div>
我试图实现的只是更改子复选框的状态并更改superman
变量的值,但出于某种原因,它总是在控制台日志中打印出superman:false
。即使我手动选中复选框并单击div,即使现在选中了复选框,它也会报告superman:false
什么原因会导致这种情况?您可以将
更改为
,然后去掉所有jQuery代码,它就会正常工作。您应该使用.prop()
而不是attr,因为选中的是复选框的属性。此外,您还可以将代码范围缩小到:
$('#superman').on('click', function () {
var chk = $(this).find('input:checkbox:first')
chk.prop("checked", !chk.prop("checked"));
});
checked
是一个属性,应该使用prop('checked',true)
设置。请查看JQuery中的prop
方法:也请查看这个问题:深入讨论两者之间的区别。您正在重新实现浏览器已经完成的功能。你为什么不直接用一个
而不是
,然后在复选框更改时监听,$(“#超人”)。on(“更改”,fn)代码>?问题是-我已经试过了,但出于某种原因它不起作用。我知道,我知道,我不知道它是外部库还是什么,我不是说它根本不起作用,我只是说它对我不起作用。这就是我来这里的原因-看看是否还有其他解决方案。@NemanjaT:只有在fiddle/codepenI中重现问题时才有帮助。我完全忘记了标签更改复选框的状态。我现在就试试看你的反应太快了!;)我必须再等5分钟才能接受一个答案。请考虑编辑你的帖子,以进一步解释你的代码所做的以及为什么它会解决这个问题。一个只包含代码的答案(即使它在工作)通常不会帮助OP理解他们的问题。
$('#superman').on('click', function () {
var chk = $(this).find('input:checkbox:first')
chk.prop("checked", !chk.prop("checked"));
});
$('#superman').on('click', function () {
superman = !$(this).children('input:checkbox:first').is(':checked');
$(this).children('input:checkbox:first').prop('checked',superman);
console.log("superman: " + superman);
});