我如何使用 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);
});
在这里尝试一下 http://jsfiddle.net/baPQc/,这是一个简单的方法,我们只是保留一个找到的值的数组,如果我们还没有找到该值,请将其添加到数组中(.push() http://www.w3schools.com/jsref/jsref_push.asp), 要是我们have找到了这个值,这是我们之前发现的一个骗局,.remove() http://api.jquery.com/remove/ it.
这只爬取<select>
一次,最小化 DOM 遍历,这是lot比数组操作更昂贵。我们也正在使用$.inArray() http://api.jquery.com/jQuery.inArray/代替.indexOf()
所以这在 IE 中可以正常工作。
如果您想要一个效率较低但较短的解决方案(仅用于说明,请使用第一种方法!):
$('select option').each(function() {
$(this).prevAll('option[value="' + this.value + '"]').remove();
});
你可以在这里测试一下 http://jsfiddle.net/gjmtM/,这会删除具有相同值的所有同级,但它比第一种方法昂贵得多(DOM 遍历很昂贵,并且这里调用多个选择器引擎,还有更多)。我们正在使用.prevAll() http://api.jquery.com/prevAll/因为你不能直接删除.siblings() http://api.jquery.com/siblings/里面一个.each() http://api.jquery.com/each/,它会导致循环出现一些错误,因为它需要下一个子项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)