jQuery 选择具有相同 ID 的所有项
jQuery select all items with same ID
我知道它不好,我知道ID是唯一的,我需要在某些页面上大规模修复它。
我不知道那些ID是什么,我只知道它的类,所以有可能以某种方式做
$('.someClass').itemsThatHasIdDuplicate().each(function(){
$(this).attr('id', Math.random()); //its stupid to use random for ID, but shows what I mean
});
附言。我已经找到了这个,但这假设你知道 ID 是什么。
您可以使用
.attr( attributeName, function(index, attr) )
执行此操作:
// Get all the items with Duplicate id
var $itemsThatHasIdDuplicate = $('[id]').filter(function () {
return $('[id="' + this.id + '"]').length > 1;
});
// Modify the id for all of them
$itemsThatHasIdDuplicate.attr('id', function (i, val) {
return 'newID' + (i + 1);
});
演示:小提琴
首先,向所有具有相同 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 的第一个实例是什么。
http://jsfiddle.net/g2DWR/1/
编辑:另外,在插件形式中,以便您可以将其链接$('.foo').fixDupes().css('color', 'red');
相关文章:
- 基于类似索引的queryString的Id选择器
- 哪个更快?按 ID 选择,或按索引选择
- 获取 HTML 5 音频控制文件位置并在不使用 id 选择器的情况下更新 src
- Jquery按id选择变量
- 使 ajax 请求和成功数据显示在 id <选择>选择>部分中
- 如何在jQuery的.on()方法中动态更新按钮的ID选择器
- Mootools提交表单仅在通过ID选择表单时有效
- 不能同时通过类和数字 ID 选择 jquery 元素
- Jquery语法错误,id选择器上的表达式无法识别
- JavaScript id 选择器不起作用?不知道出了什么问题
- 将 ID 选择器注入样式
- 如何使用 JQuery 按类和 id 选择非父元素
- Jquery id 选择器变量无法绑定到 onchange
- 如何使用子元素的 ID 选择父元素的第一个子元素
- jQuery ID 选择器仅适用于第一个元素
- JavaScript 将 body_0$ 添加到 ID 选择器中
- 使用隐藏字段 ID 选择器加载另一个字段中的文本
- 如何使用带有值的 ID 选择选项到另一个动态选择选项值
- jquery id 选择器的问题
- jQuery id 选择器在