我将如何使用jQuery删除重复项
<option value="English">English</option> <option value="English">English</option> <option value="English">English</option> <option value="Geology">Geology</option> <option value="Geology">Geology</option> <option value="information Technology">information Technology</option> <option value="Music">Music</option> <option value="Music">Music</option> <option value="Zoology">Zoology</option>
解决方法
你可以这样做:
var found = []; $("select option").each(function() { if($.inArray(this.value,found) != -1) $(this).remove(); found.push(this.value); });
Give it a try here,这是一个简单的方法,我们只保留一个找到的值数组,如果我们没有找到该值,将它添加到数组(.push()
),如果我们找到了值,这个是我们之前发现的欺骗,.remove()
它.
这只会抓取< select>曾经,最小化DOM遍历,这比阵列操作贵很多.我们也使用$.inArray()
而不是.indexOf(),所以这在IE中正常工作.
如果你想要一个效率较低但更短的解决方案(仅用于说明,请使用第一种方法!):
$('select option').each(function() { $(this).prevAll('option[value="' + this.value + '"]').remove(); });
You can test it here,这会移除所有具有相同值的兄弟姐妹,但它比第一种方法贵得多(DOM Traversal很昂贵,而且这里有多个选择器引擎调用,还有更多).我们正在使用.prevAll()
,因为你不能在.each()
中删除.siblings()
,它会导致循环出错,因为它预计下一个孩子.
原文地址:https://www.jb51.cc/js/156570.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。