jquery 动态添加select 如何避免重复添加(去重) 20

我用ajax添加下拉栏:success:function(data){varobj=eval(data);for(vari=0;i<obj.length;i++){$("... 我用ajax添加下拉栏:success : function(data) {var obj = eval(data);for ( var i = 0; i < obj.length; i++) {$(".city").append("<option value='"+obj[i].city+"'>"+obj[i].city+"</option>");}$(".city").append("")可以添加数据,但是会添加很多重复数据我试过在for循环后写://去重$(".city option").each(function() { var getText = $(this).text(); if($(".city option:contains("+getText+")").length > 1){$(".city option:contains("+getText+"):gt(0)").remove(); }});但是只有第一条数据有效果 其他的动态添加select效果也没了 删掉去重 所以数据都有动态下拉列表值(数据重复添加) 展开
 我来答
安徽新华电脑21
2018-11-08 · TA获得超过189个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:77.9万
展开全部
1、确定当前需要添加元素的text以及对应的value

2、获取当前下拉框中所有的option元素数组optionArr,可以通过$('#citySelect option')获取元素集合。
3、遍历optionArr,判断需要添加的text或者value是否和optionArr相同,相同则不添加,没有重复则添加。
示例:
<select id='citySelect'>
<option value='beijing'>北京</option>
<option value='shanghai'>上海</option>
</select>
方法:
<script>
function addCity(value, text){
var optionArr = $('#citySelect option');
for(var i=0;i<optionArr.length;i++){
if(optionArr[i].text == text || optionArr[i].value == value){
return false;
}
}
var addOption = "<option value='" + value + "'>" + text + "</option>";
$('#citySelect').append(addOption);
}
</script>
HI小小大人物
2018-09-06 · TA获得超过2万个赞
知道大有可为答主
回答量:3433
采纳率:94%
帮助的人:291万
展开全部
jquery去重复 如何去除select控件重复的option

方法也比较多,这里提供一个使用jquery选择器 :contains 的方法:
$(":contains(text)"); // 选取包含指定字符串的元素
这样就可以选出包含重复字符串的option元素,然后将其删掉
追问
您好 麻烦您可以写一个实例吗
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a小鳄鱼
2018-09-12 · 超过77用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:28%
帮助的人:71.9万
展开全部
添加之前先清除select标签中的内容,$(".city").html("");然后再append();就不会有重复数据了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
半夏白色的染_
2018-09-07
知道答主
回答量:28
采纳率:0%
帮助的人:3万
展开全部
添加之前做一件事,判断是否已经存在名称。判断的方式很多,比较简单的就是jquery获取option集合,循环判断文本是否相同,相同则已经存在,提示不能添加。或者用contains,fiter等选择器,具体用法教程很多也很简单。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-09-06
展开全部
//每次添加前清空一次
success : function(data) {
    var obj = eval(data);
    if(obj.length > 0){
        $(".city").html("");
    }
    for ( var i = 0; i < obj.length; i++) {
    ...
更多追问追答
追问
还是有重复的
追答

那就是data中的存在重复数据可以

var obj = eval(data);

var citys = [];
var city_set;
for(var i in obj){
    citys.push(obj[i].city);
}
city_set = new Set(citys); //去重
city_set.forEach(function(c){
     $(".city").append("<option value='"+c+"'>"+c+"</option>");   
});
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式