使用jquery从标记元素重置id
给定以下html:使用jquery从标记元素重置id,jquery,html,reset,Jquery,Html,Reset,给定以下html: <div> <div id="element-0"></div> <div id="element-1"></div> <div id="element-2"></div> <input id="element-3"></input> <div id="element-4"></div> <d
<div>
<div id="element-0"></div>
<div id="element-1"></div>
<div id="element-2"></div>
<input id="element-3"></input>
<div id="element-4"></div>
<div id="element-5"></div>
<div id="element-6"></div>
</div>
如果删除ID为2和4的元素,我如何重置(如果更容易的话,使用jquery或javascript)所有这些元素的ID,最终结果是:
<div>
<div id="element-0"></div>
<div id="element-1"></div>
<input id="element-2"></div>
<div id="element-3"></div>
<div id="element-4"></div>
</div>
谢谢你的帮助 函数resetIndexes(){
function resetIndexes() {
var els = $('div *'), i;
for(i = 0; i < els.length; i++){
els.eq(i).attr('id', 'element-' + i);
}
}
变量els=$('div*'),i;
对于(i=0;i
//您的标记在此处出错,请删除
$('#elements').children().each(函数(索引,val){
$(this.attr('id','element-'+索引);
});
其他答案可以,但可能不够可靠@例如,Xander的回答没有考虑其中一个元素是输入
而不是div
@密码悖论的答案依赖于封闭的div
的每个子级都有一个“元素-”ID
要彻底做到这一点,您必须遍历DOM中的所有元素,查看它们的ID是否以“element-”开头,然后相应地更改ID
我首先编写了一个函数来获取所有以“element-”开头的元素:
然后是一个重新排列ID的函数:
function reorderIds() {
var idx = 0;
getElements().each( function() {
$(this).attr( 'id', 'element-' + idx++ );
} );
}
您可以在这里看到我的JSFIDLE:这闻起来像是糟糕的设计。您的代码不应期望数字升序。如果您能详细说明您的代码将要做什么,我们可以建议一个更好的替代方案。
function getElements() {
return $('html').find('*').filter( function() {
var id = $(this).attr('id');
return id && id.indexOf( "element-" ) == 0;
} );
}
function reorderIds() {
var idx = 0;
getElements().each( function() {
$(this).attr( 'id', 'element-' + idx++ );
} );
}