jquery怎么删除select下option中重复文本的项?

数据的流 2012-11-27 03:20:09
如:

<select id="ddl_test">
<option>语文</option>
<option>语文</option>
<option>数学</option>
<option>数学</option>
<option>数学</option>
<option>数学</option>
<option>英语</option>
</select>

结果:

<select id="ddl_test">
<option>语文</option>
<option>数学</option>
<option>英语</option>
</select>
...全文
454 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2015-03-26
  • 打赏
  • 举报
回复
$("select").each(function(i,n){ var options = ""; $(n).find("option").each(function(j,m){ if(options.indexOf($(m)[0].outerHTML) == -1) { options += $(m)[0].outerHTML; } }); $(n).html(options); });
吉普赛的歌 社区高级成员 T9 2012-11-28
  • 打赏
  • 举报
回复
为何要让垃圾数据进来呢? 你可以在给select绑定数据之前,就去重复项嘛!
hujiiori 2012-11-28
  • 打赏
  • 举报
回复
我觉得楼主的可以了,代码简洁
kinghome 2012-11-28
  • 打赏
  • 举报
回复
var optionText = null; $("#ddl_test option").each(function () { var text = $(this).text() if( text == optionText ) $(this).remove(); else optionText = text; });
bree06 2012-11-28
  • 打赏
  • 举报
回复
javascript写的可以用吗?
<script type="text/javascript">
	window.onload = function() {
		var opts = document.getElementById('ddl_test').options;
		var obj = new Object(), index = 0;
		while (index < opts.length) {
			if (opts[index].text in obj) opts[index] = null;
			else {
				obj[opts[index].text] = opts[index].text;
				index++;
			}
		}
		obj = null;
	}
</script>
风一样的大叔 2012-11-28
  • 打赏
  • 举报
回复
恩,如果是从数据库中查的,可以删除重复项
数据的流 2012-11-27
  • 打赏
  • 举报
回复

    $("#ddl_test option").each(function () {
        var text = $(this).text();
        if ($("#ddl_test option:contains('" + text + "')").length > 1)
            $("#ddl_test option:contains('" + text + "'):gt(0)").remove();
    })
求优化,求更好的写法。。。大神何在?

87,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧