在jQuery自动完成中从数组中删除所选项

我有这个数组,

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]; } }); 

问题是您没有更新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; } 

演示

参考

从这篇文章中,您可以执行以下操作:

 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”的第一个数组项。