jQuery如果(x == y)不工作

时间:2011-02-18 04:18:30

标签: javascript jquery checkbox

所以,我有一些虚假的复选框(所以我可以设置它们),它们可以与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.

});

2 个答案:

答案 0 :(得分:3)

我无法在您的代码中发现问题,但您只需使用您要添加的类来代替productInterest数组。这使您可以将代码压缩为单个:

// Condense productOne, productTwo, etc...
$('[id^="product"]').click(function() {
    // Condense addClass, removeClass
    $(this).toggleClass('checkboxChecked');
});

并检查其中一个是否被检查:

if ($('#productOne').hasClass('checkboxChecked')) {...}

这将确保用户界面始终与“数据”同步,因此,如果有其他代码干扰您将能够发现它。

答案 1 :(得分:0)

好的,只是掌握了额头的一刻。关于我修改过的代码 - 每次点击都会重置变量。那就是问题所在。咄。