从选择下拉列表中筛选重复选项

我有一个从列表生成的下拉选择器,并希望筛选选项以删除重复的条目。 我要过滤…

 Microsoft Microsoft Microsoft Microsoft Apple Apple Google  

…向下呈现用户……

  Microsoft Apple Google  

(数据来自另一个列表上的Sharepoint Lookup,我想我可以使用jquery来保留唯一的选项,而不必深入了解正在发生的事情。)我可以删除这样的选项吗? 谢谢。

你可以通过一个简单的循环来实现 – 尽管如此,可能有一种更聪明的方法来处理这个jQuery选择器。 以下应该有效:

 var usedNames = {}; $("select[name='company'] > option").each(function () { if(usedNames[this.text]) { $(this).remove(); } else { usedNames[this.text] = this.value; } }); 

编辑:这是一个function风格的单行程序,在优秀的Underscore.js的帮助下完成它,虽然以前的版本几乎肯定更有效:

 _.each(_.uniq(_.pluck($("select[name='company'] > option").get(), 'text')), function(name) { $("select[name='company'] > option:contains(" + name + ")").not(":first").remove(); }); 

你可以这样做:

 var previousOption; $('select[name=company] option').each(function() { if (this.text == previousOption) $(this).remove(); previousOption= this.text; }); 

您可以尝试以下代码,它将删除重复项,无论它们的位置如何。 这里#targetSelect是你的目标Dropdown

 var a = new Array(); $(#targetSelect).children("option").each(function(x){ test = false; b = a[x] = $(this).text(); for (i=0;i