所以,我有一些虚假的复选框(所以我可以设置它们),它们可以与jQuery一起使用来检查或不检查。我的文档中有许多虚拟复选框,每个复选框都有一个单击功能:
var productInterest = [];
productInterest[0] = false;
productInterest[1] = false;
productInterest[2] = false;
// here is one function of the three:
$('#productOne').click(function() {
if (productInterest[0] == false) {
$(this).addClass("checkboxChecked");
productInterest[0] = true;
} else {
$(this).removeClass("checkboxChecked");
productInterest[0] = false;
}
});
问题似乎是if语句中存在错误,因为它会检查,但不会取消选中。换句话说,它将添加类,但变量不会改变,所以它仍然认为它已被检查。有人有什么想法吗?谢谢你的帮助。
更新:所以,我需要向您展示我的所有代码,因为它以我提供的方式工作(感谢评论者帮助我实现这一点)...只是不是它的实际方式在我的网站上使用。所以请在下面找到完整的代码。
一切都需要在一个函数中发生,因为每个复选框的UI和数据需要立即更新。所以这是完整的功能:
$('input[name=silkInterest]').click(function() { // they all have the same name
var silkInterest = [];
silkInterest[0] = false;
silkInterest[1] = false;
silkInterest[2] = false;
if ($(this).is('#silkSilk')) { // function stops working because the .is()
if (silkInterest[0] == false) {
$(this).addClass("checkboxChecked");
silkInterest[0] = true;
} else {
$(this).removeClass("checkboxChecked");
silkInterest[0] = false;
}
alert(silkInterest[0]);
}
if ($(this).is('#silkAlmond')) {
if (silkInterest[1] == false) {
$(this).addClass("checkboxChecked");
silkInterest[1] = true;
} else {
$(this).removeClass("checkboxChecked");
silkInterest[1] = false;
}
}
if ($(this).is('#silkCoconut')) {
if (silkInterest[2] == false) {
$(this).addClass("checkboxChecked");
silkInterest[2] = true;
} else {
$(this).removeClass("checkboxChecked");
silkInterest[2] = false;
}
}
var silkInterestString = silkInterest.toString();
$('input[name=silkInterestAnswer]').val(silkInterestString);
// This last bit puts the code into a hidden field so I can capture it with php.
});
答案 0 :(得分:3)
我无法在您的代码中发现问题,但您只需使用您要添加的类来代替productInterest
数组。这使您可以将代码压缩为单个:
// Condense productOne, productTwo, etc...
$('[id^="product"]').click(function() {
// Condense addClass, removeClass
$(this).toggleClass('checkboxChecked');
});
并检查其中一个是否被检查:
if ($('#productOne').hasClass('checkboxChecked')) {...}
这将确保用户界面始终与“数据”同步,因此,如果有其他代码干扰您将能够发现它。
答案 1 :(得分:0)
好的,只是掌握了额头的一刻。关于我修改过的代码 - 每次点击都会重置变量。那就是问题所在。咄。