Javascript jQuery选择具有相同ID的所有项目
我知道它不好,我知道ID是唯一的,我需要在一些页面上大规模地修复它 我不知道那个些ID是什么,我只知道它的类别,所以有可能吗Javascript jQuery选择具有相同ID的所有项目,javascript,jquery,html,Javascript,Jquery,Html,我知道它不好,我知道ID是唯一的,我需要在一些页面上大规模地修复它 我不知道那个些ID是什么,我只知道它的类别,所以有可能吗 $('.someClass').itemsThatHasIdDuplicate().each(function(){ $(this).attr('id', Math.random()); //its stupid to use random for ID, but shows what I mean }); 另外,我已经找到了,但这是假设您知道ID是什么。您可以
$('.someClass').itemsThatHasIdDuplicate().each(function(){
$(this).attr('id', Math.random()); //its stupid to use random for ID, but shows what I mean
});
另外,我已经找到了,但这是假设您知道ID是什么。您可以使用:
演示:首先,向具有相同id的所有元素添加一些类
$('[id]').each(function(){
var ids = $('[id="'+this.id+'"]');
if(ids.length>1 && ids[0]==this){
$('#'+this.id).addClass('changeID');
}
});
然后更改拥有该类的所有元素的id
$('.changeID').each(function(){
$(this).attr("id","changed_"+Math.random());
}
仅供参考:我建议您选择日期时间来分配id,而不是使用
math.random()
您可以做的是迭代该类的所有元素,并使用相同id对这些元素进行分组。然后使用多个元素修改这些组:
var IDs = {};
var idModifier = function(index, id) {
return id + index;
};
$('.someClass').each(function() {
(IDs[this.id] || (IDs[this.id] = [])).push(this);
});
$.each(IDs, function(id, elements) {
if (elements.length > 1) {
$(elements).prop('id', idModifier);
}
});
此方法的“优点”是您只搜索文档一次,在开始时使用
$('.someClass')
必须确保不覆盖原始ID
var cls = 'foo';
$('.' + cls).each(function() {
var me = this;
var id = $(me).attr('id');
var dupes = $('#' + id + '.' + cls);
dupes.each(function() {
if(this != me) {
$(this).attr('id', id + '_r_' + Math.random());
}
else {
$(this).attr('id', id + '_o');
}
});
});
这样,您还可以知道每个ID的第一个实例是什么
编辑:这样您就可以链接它
$('.foo').fixtupes().css('color','red')代码>它将更改类的所有元素,而不仅仅是ID重复的元素。
var cls = 'foo';
$('.' + cls).each(function() {
var me = this;
var id = $(me).attr('id');
var dupes = $('#' + id + '.' + cls);
dupes.each(function() {
if(this != me) {
$(this).attr('id', id + '_r_' + Math.random());
}
else {
$(this).attr('id', id + '_o');
}
});
});