我正在尝试将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选择器中。
答案 0 :(得分:0)
在我看来,你只需要使用一个连接符:
$("#products-list > li:not(:eq(" + (pos - 1) + ")), #prices-list > li:not(:eq(" + (pos - 1) + "))").hide();
希望这有帮助!