有没有办法检查两个div是否具有相同的ID?
我动态创建了div,现在发现删除具有重复ID的div非常困难,请问有人可以帮忙吗?
有没有办法检查两个div是否具有相同的ID?
我动态创建了div,现在发现删除具有重复ID的div非常困难,请问有人可以帮忙吗?
我不知道你在这里想要实现什么,但通常情况下,你不应该有两个具有相同id的元素。但是如果你有某些原因需要这样做,也许你正在构建一个验证器或类似的东西,你可以按照以下方式计算元素的数量:
var count = document.querySelectorAll('#test').length;
console.log(count);
document.querySelectorAll('#test')[1].remove();
$('[id]').each(function () {
var ids = $('[id=' + this.id + ']');
if (ids.length > 1 && ids[0] == this) {
$(ids[1]).remove();
}
});
你需要像辅助函数一样循环所有元素,因为getElementById()
在ID不唯一时无法正常工作。
例如,不需要jQuery。弹出重复的ID。
var idMap = {};
var all = document.getElementsByTagName("*");
for (var i=0; i < all.length; i++) {
// Do something with the element here
var elem = all[i];
if(elem.id != ""){ //skip without id
if(idMap[elem.id]){
alert("'" + elem.id + "' is not unique")
}
idMap[elem.id] = true;
}
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<div id="id1"></div>
<div id="id2"></div>
<div id="id3"></div>
<div id="id4"></div>
<div id="id5"></div>
<div id="id1"></div>
</body>
</html>
$('[id]').each(function(){
var ids = $('[id="'+this.id+'"]');
if (ids.length>1 && ids[0]==this){
$("#"+this.id).remove();
}
});
上述函数使用jQuery创建文档中所有ID的数组并删除重复的ID。
$("#"+this.id).last()
没有意义。 - Joe Frambach像这样的代码应该可以实现你想要的功能
$('[id]').each(function (i) {
$('[id="' + this.id + '"]').slice(1).remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id = "1">
ola
</div>
<div id = "2">
ole
</div>
<div id = "1">
ola
</div>
<div id = "3">
olo
</div>
<div id = "1">
ola
</div>
<div id = "3">
olo
</div>
基于链接的示例:jQuery:查找重复ID并仅保留第一个
var idList = [];
$('*[id]').each(function(){
var id = $(this).attr('id');
if($.inArray(id, idList)){
alert('the id ' + id + ' is already set!');
} else {
idList.push(id);
}
});