jQuery如果只有1项inArray

时间:2012-01-17 12:08:45

标签: jquery arrays

好的,所以我有这个jquery函数来抓取复选框的值并用作标识符来显示或隐藏ul

问题是我无法在复选框添加X中添加if只有1个选项。

以下是代码和我尝试过的内容

$('#filter li input:checkbox').change(
    function(){
        var show = $('input:checkbox:checked').map(function(){
           return $(this).val();
        });
        if (show.length > 0)
        {
                $('#list li').each(
                function(){
                    /*if ($.inArray($(this).attr('class'),show) <= 1)
                    {
                        console.log($(this));
                    }
                    else */if ($.inArray($(this).attr('class'),show) > -1)
                    {                        
                        $(this).show();
                    }
                    else
                    {
                        $(this).hide();
                    }
                });
        }
        else {
            $('#list li').show();
        }
    });

我真的不明白这是如何运作的:if ($.inArray($(this).attr('class'),show) > -1)因为我尝试了if ($.inArray($(this).attr('class'),show) = 1)而没有

1 个答案:

答案 0 :(得分:3)

您在if子句中指定了一个值:

if ($.inArray($(this).attr('class'),show) = 1)

要打破它,这实际上说的是等同于

$.inArray($(this).attr('class'),show) = 1;
if ($.inArray($(this).attr('class'),show))
{
    ...

您应该使用==比较运算符

if ($.inArray($(this).attr('class'),show) == 1)

或者,更准确地避免类型错误,请使用===

if ($.inArray($(this).attr('class'),show) === 1)

这样可以避免1"1"返回true

之间的比较