4 回答

TA貢獻1829條經驗 獲得超7個贊
您可能必須將項目作為常規 javascript 變量引入,但不能作為 jquery 選擇器。
var items = [
{ item: "Saab", sku: "SA" },
{ item: "Volvo", sku: "VO" },
{ item: "BMW", sku: "BM" },
{ item: "Toyota", sku: "TO" },
{ item: "Honda", sku: "HO" },
{ item: "Nissan", sku: "NI" },
];
$("#filter").keyup(function() {
var filter = $(this).val();
items.forEach(function(item, index) {
var value = item.item // Honda, Nissan
var sku = item.sku // HO, NI
if (filter !== '' && new RegExp(filter, "i").test(value)) {
// Do somethign when matched
console.info(index, value, sku)
} else {
// console.log(index);
// console.log(value);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="live-search" action="" class="styled" method="post">
<fieldset>
<input type="text" class="text-input" id="filter" value="" />
<span id="filter-count"></span>
</fieldset>
</form>

TA貢獻1921條經驗 獲得超9個贊
你不能像這樣使用jquery,把它改成map
items.map(function (value, index) {
if (value.item.indexOf(filter) < 0) {
// Do somethign
} else {
console.log(index);
console.log(value);
}
});
var items =[ {item:"Saab", sku:"SA"},
{item:"Volvo", sku:"VO"},
{item:"BMW", sku:"BM"},
{item:"Toyota", sku:"TO"},
{item:"Honda", sku:"HO"},
{item:"Nissan", sku:"NI"},
];
$("#filter").keyup(function () {
var filter = $(this).val();
console.log(filter);
items.map(function (value, index) {
if (value.item.indexOf(filter) < 0) {
// Do somethign
} else {
console.log(index);
console.log(value.item + "-" + value.sku);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="live-search" action="" class="styled" method="post">
<fieldset>
<input type="text" class="text-input" id="filter" value="" />
<span id="filter-count"></span>
</fieldset>
</form>

TA貢獻2016條經驗 獲得超9個贊
好吧,問題包括對數組屬性的錯誤訪問:
items['item']解析為undefined
實際上,該屬性屬于數組中包含的對象,而不是數組本身。itemitems
您必須循環訪問集合(帶或不帶jQuery),并在訪問后在每個項目上使用該屬性:
$("#filter").keyup(function () {
var filter = $(this).val();
$(items).each(function (index, value) {
console.log('value:',value)
if (value.item.search(new RegExp(filter, "i")) < 0) {
//do something
} else {
console.log(index);
console.log(value);
}
});
});
如果您不想使用 jQuery 循環訪問集合:
$("#filter").keyup(function () {
var filter = $(this).val();
if(items.find(item => item.item === filter)) {
console.log('found');
} else {
console.log('not found')
}
});

TA貢獻1831條經驗 獲得超10個贊
這里的問題是由于使用jQuery選擇器選擇數組項引起的,數組項不適用于數組或對象,它僅適用于DOM元素選擇,以下是如何使用jQuery執行此操作:
var items = [
{ item: "Saab", sku: "SA" },
{ item: "Volvo", sku: "VO" },
{ item: "BMW", sku: "BM" },
{ item: "Toyota", sku: "TO" },
{ item: "Honda", sku: "HO" },
{ item: "Nissan", sku: "NI" },
];
$("#filter").keyup(function () {
var filter = $(this).val();
$.each(items, function (index, value) {
$.each(Object.keys(value), function (idx, val) {
if (val.search(new RegExp(filter, "i")) < 0) {
// Do somethign
} else {
console.log(index, idx);
console.log(value, val);
}
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="live-search" action="" class="styled" method="post">
<fieldset>
<input type="text" class="text-input" id="filter" value="" />
<span id="filter-count"></span>
</fieldset>
</form>
添加回答
舉報