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