我有一个复选框列表。加载页面时,有些是已选中,有些则未加载。当用户点击复选框时,我有一个jQuery函数,用于检查是否选中了所选的复选框。
问题是当未选中复选框时,我得到肯定的结果,反之亦然。这是HTML的一个例子:
<input type="checkbox" class="update-member">
<input type="checkbox" class="update-member" checked>
这是javascript:
updateMembership : function (e) {
e.preventDefault();
if ($(this).prop('checked')) {
console.log('Checked!');
} else {
console.log('NOT Checked');
}
}
例如,当用户点击第一个复选框时,它会显示“已检查!”#39;在控制台中。
也许我的想法是逆转了?不是javascript?
答案 0 :(得分:0)
这个答案有点推测,但对你的观察的一个解释是,复选框实际上是按你认为正在使用的顺序呈现的。如果带有checked
属性的复选框出现在左侧(第一个),而没有任何属性的复选框出现在右侧,那么您的观察结果实际上是有意义的。
如果您向我们展示您的CSS,我们可以通过更仔细地查看布局来确认这一点。
答案 1 :(得分:0)
我想当你使用时:
if ($(this).prop('checked'))
...它始终会返回true
,因为它会将自己报告为现有属性,而不是是否主动检查。
Snippet使用此条件:
if ($(this).is(':checked'))
...它返回一个布尔值,反映了复选框的:checked
状态。
不确定e.preventDefault()
使用复选框的用途,所以我删除了它。
<强>段强>
$('.update-member').on('click', updateMembership);
function updateMembership(e) {
if ($(this).is(':checked')) {
console.log('Checked!');
} else {
console.log('NOT Checked');
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" class="update-member">
<input type="checkbox" class="update-member" checked>
&#13;