6

私はこの配列を持っています、

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

2 に答える 2

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

デモ

参考

于 2012-10-05T20:02:23.233 に答える
2

この投稿から、次のようなことができます。

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」プロパティを持つ最初の配列項目が削除されます。

于 2012-10-05T19:50:33.123 に答える