在JQuery中使用变量等于选择器?

时间:2015-05-15 18:38:34

标签: javascript jquery list

我正在尝试将JQuery的not选择器与带有变量的eq选择器一起使用,以根据搜索条件过滤项目列表。

我有一份与价格清单相邻的产品清单。我还有一个搜索字段,您可以按产品或价格进行搜索。我的目标是,当有人搜索特定产品时,仅显示该产品,并隐藏其余产品。

这是我的代码。

var numItems = 5;

// When the search button is clicked
$("#search-btn").click(function() {
        // As long as the search field has a value
        if ($("#search-field").val() !== "") {
            var productsArray = [];
            for (var i = 0; i < numItems; i++) {
                // If the product name equals the search field value add to
                // the array
                if (products[i] == $("#search-field").val()) {
                    productsArray.push(products[i]);
                }
            }
            // Get the index of the product
            var pos = products.indexOf(productsArray[0]);
            $("#products-list > li:not(:eq(pos - 1)),
            #price-list > li:not(:eq(pos - 1))").hide();
        }
    });

如果我在eq选择器中有一个数值(即2),我的代码就可以工作,但是当我在里面放一个变量时,我的代码没有。这是具体的一行。

$("#products-list > li:not(:eq(pos - 1)), #prices-list > li:not(:eq(pos - 1))").hide();

#products-list#prices-list分别是我的产品和价格列表的名称。我正在使用直接子选择器>来查找这些列表的所有列表元素。然后我尝试选择与搜索条件不匹配的列表项并隐藏它们。这样,只显示搜索列表项。

我需要知道如何将变量放在jquery选择器中。

1 个答案:

答案 0 :(得分:0)

在我看来,你只需要使用一个连接符:

$("#products-list > li:not(:eq(" + (pos - 1) + ")), #prices-list > li:not(:eq(" + (pos - 1) + "))").hide();

希望这有帮助!