我有这个数组,
var metrics = [
{
value: "1",
label: "Sold Listings",
desc: "sold_listings"
},
{
value: "10",
label: "New Pendings",
desc: "new_pendings"
},
{
value: "4",
label: "All Pendings",
desc: "all_pendings"
},
{
value: "2",
label: "New Listings",
desc: "new_listings"
},
{
value: "3",
label: "Active Listings",
desc: "active_listings"
}
];
我想要做的是选择项目,例如我将选择活动列表,这个项目应该从数组中删除。因此,当自动完成再次呈现时,它将不会显示所选项目。
//My Idea of removing the item
$.each(metrics,function(i,val){
if(val.value == ui.item.value){
delete metrics[i];
}
});
答案 0 :(得分:6)
问题是您没有更新autocomplete
的来源
要做到这一点,你必须使用以下行。
$('.yourAutocomplete').autocomplete('option', 'source', yourArray);
因此,在自动完成时选择事件:
假设#autocomplete
是input
。
select: function(e, ui) {
metrics = jQuery.grep(metrics, function(element) {
return element.value != ui.item.value;
});
$('#autocomplete').autocomplete('option', 'source', metrics)
return false;
}
参考:
答案 1 :(得分:2)
从this帖子中,您可以执行以下操作:
var y = [1, 2, 3]
var removeItem = 2;
y = jQuery.grep(y, function(value) {
return value != removeItem;
});
编辑:
对于您的示例,您可以执行以下操作:
var removeItem = "1";
metrics = $.grep(metrics, function(val) {
if (val.value != removeItem) {
return val;
}
});
这将删除值为“1”的第一个数组项。