Я пытаюсь использовать селектор not
JQuery с селектором eq
с переменными для фильтрации списка элементов на основе критериев поиска.Использование переменных внутри селектора JQuery равно?
У меня есть список продуктов, смежных со списком цен. У меня также есть поле поиска, где вы можете искать по продукту или цене. Моя цель заключается в том, когда кто-то ищет конкретный продукт, только для показа этого продукта, а остальные продукты должны быть скрыты.
Вот мой код.
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.
'' $ ("# products-list> li: not (: eq (" + (pos - 1) + ")), # prices-list> li: not (: eq (" + (pos - 1) + "))"). hide(); '' –
Я знаю, что это должно быть, но это была такая простая проблема, и я не чувствовал необходимости объяснять свой ответ, поэтому вместо этого использовал комментарий. –
** Селектор jQuery - это просто строка **. используйте конкатенацию строк. –