在无序列表中查找重复项
Find duplicate item in unordered list
我有两个无序的列表。一个无序列表被动态填充,然后双击它的项目添加到另一个无序的列表中。
我正试图弄清楚如何检测动态填充列表中的项目是否已经在另一个列表中。如果是,则不应再次添加。不希望添加重复的项目。
填充ul:的代码
.done(function(html) {
var results = jQuery.parseJSON(html);
$('#store_sel').children().remove();
for (var i = 0; i <= results.length; i++){
$("#store_selection").append("<li class='" + results[i].name + " stores'" + "id= " + results[i].uuid +
+ ">" + results[i].name + "</li>");
}
});
事件:
$('#store_selection').on('dblclick', 'li', function(e) {
e.stopPropagation();
e.preventDefault();
if ($('#store_selected').find($(this))) {
console.log('item already there');
} else {
$('#store_selected').append($(this).clone());
//$(this).remove();
}
});
编辑:为什么不起作用?即使ul为空,它基本上也会转到console.log。
if
语句中存在几个问题。
- 一个元素不能同时位于两个位置。因此在两个列表中找不到
this
- 一个物体永远是真实的。请改用返回的选择器集合的
length
由于ID在页面中必须是唯一的,我建议您使用data-
属性来存储UUID
<li data-uuid="xxxx-yyy">
然后当你搜索时:
var uuid = $(this).data('uuid')
if ($('#store_selected').find('.stores[data-uuid='+uuid+']').length) {
console.log('item already there');
} else {
$('#store_selected').append($(this).clone());
//$(this).remove();
}
相关文章:
- 正在全局范围中查找JavaScript函数
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- es6 相当于下划线查找位置
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何在不传递此信息的情况下查找被调用的元素
- Lodash 从值数组中查找数组中的值
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 使用RegExp查找url中的字符
- 查找元素高度,包括边距
- 使用JS查找数组的平均值
- 查找最短和最长日期
- 猫鼬在特定记录中查找嵌套记录
- 使用javascript在MVC中查找网格长度时出错
- 在Javascript数组中查找绝对最大值
- 在javascript中查找单词
- 在无序列表中查找重复项
- 在无序列表中查找对称元素
- 使用jQuery在单独的无序列表中查找具有匹配类名的列表项