Javascript 检查列表元素中是否存在重复的名称 问题:
如何检查列表元素中重复的名称/项目 我的情况: 我在列表中有一个列表,下面是一个示例:Javascript 检查列表元素中是否存在重复的名称 问题:,javascript,jquery,html-lists,nested-sortable,Javascript,Jquery,Html Lists,Nested Sortable,如何检查列表元素中重复的名称/项目 我的情况: 我在列表中有一个列表,下面是一个示例: <ol class="sortable ui-sortable"> <li id="category_1"><div>Car</div> <ol> <li id="category_2"><div>Color</div> <ol>
<ol class="sortable ui-sortable">
<li id="category_1"><div>Car</div>
<ol>
<li id="category_2"><div>Color</div>
<ol>
<li id="category_3"><div>Red</div></li>
<li id="category_4"><div>Black</div></li>
</ol>
</li>
</ol>
</li>
<li id="category_5"><div>Motor</div>
<ol>
<li id="category_6"><div>Red</div></li>
<li id="category_7"><div>Black</div></li>
</ol>
</li>
<li id="category_9"><div>Truck</div></li>
</ol>
这是一个开始。一种函数,它接收一个列表并返回第一个
li
,并重复执行.text()
。您将问题标记为jQuery,这使问题变得更简单
function checkListForDuplicates(ol) {
var $lis = $(ol).children("li"),
found = [],
i;
for (i = 0; i < $lis.length; i++) {
text = $($lis[i]).text();
if ($.inArray(text, found)) {
return $lis[i];
} else {
found.push(text);
}
}
}
函数checkListForDuplicates(ol){
变量$lis=$(ol).children(“li”),
找到=[],
我
对于(i=0;i<$lis.length;i++){
text=$($lis[i]).text();
if($.inArray(文本,已找到)){
返回$lis[i];
}否则{
查找。推送(文本);
}
}
}
考虑到我的列表
<ul id="myid">
<li>apple</li>
<li>ibm</li>
<li>apple</li>
<li>microsoft</li>
<li>ibm</li>
</ul>
使用示例参见下面的编辑 我确信您将需要使用:contains()选择器
$('div').mouseup(function(){
var temp = $(this).text();
var others = $(this).parent().siblings().children('div:contains('+temp+')');
if(others.size() > 0){
$(this).addClass('highlighted');
}else{
$(this).removeClass();
}
});
这就是我想到的,但它不起作用:(
也许有人可以在此基础上:
编辑:
我回到它并让它工作:
这可能很疯狂,但每次鼠标在列表上移动时,它都会执行检查。可能有更好的方法来执行此操作。除非页面被中断,否则您的小提琴示例将继续初始化。
var liText = '',
liList = $('#myid li'),
listOfDuplicate = [];
$(liList).each(function () {
var text = $(this).text();
if (liText.indexOf('|' + text + '|') == -1) liText += '|' + text + '|';
else listOfDuplicate.push($(this));
});
$(listOfDuplicate).each(function () {
alert("Duplicates : " + $(this).text());
});
$('div').mouseup(function(){
var temp = $(this).text();
var others = $(this).parent().siblings().children('div:contains('+temp+')');
if(others.size() > 0){
$(this).addClass('highlighted');
}else{
$(this).removeClass();
}
});
function checkContents(){
$("div").each(function(){
var temp = $(this).text();
var others = $(this).parent().siblings().children('div:contains('+temp+')');
if(others.size() > 0){
$(this).addClass('highlighted');
}else{
$(this).removeClass('highlighted');
}
});
}
$(document).ready(function(){
checkContents();
$('.sortable').mousemove(function(){
$("div").each(function(){
var temp = $(this).text();
var others = $(this).parent().siblings().children('div:contains('+temp+')');
if(others.size() > 0){
$(this).addClass('highlighted');
}else{
$(this).removeClass('highlighted');
}
});
});
});