0

次の 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>
    <div id="element-5"></div>
    <div id="element-6"></div>
</div>

ID 2 と 4 の要素を削除する場合、これらすべての要素の ID をリセットする方法 (簡単な場合は jquery または javascript を使用) で、最終結果は次のようになります。

 <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>

助けてくれてありがとう!

4

3 に答える 3

1
function resetIndexes() {
    var els = $('div *'), i;

    for(i = 0; i < els.length; i++){
        els.eq(i).attr('id', 'element-' + i);
    }
}
于 2012-04-30T17:51:12.673 に答える
1

他の答えは問題ありませんが、十分に堅牢ではない可能性があります。inputたとえば、@Xanderの答えは、要素の1つがaではないことを考慮していませんdiv。@thecodeparadox の回答はdiv、「要素」ID を持つ囲みのすべての子に依存しています。

これを徹底的に行うには、DOM 内のすべての要素を調べて、それらの ID が「element-」で始まるかどうかを確認し、それに応じて ID を変更する必要があります。

「element-」で始まるすべての要素を取得する関数を作成することから始めました。

function getElements() {
  return $('html').find('*').filter( function() {
    var id = $(this).attr('id');
    return id && id.indexOf( "element-" ) == 0;
  } );
}

次に、ID を並べ替える関数:

function reorderIds() {
  var idx = 0;
  getElements().each( function() {
    $(this).attr( 'id', 'element-' + idx++ );
  } );
}

ここで私の jsfiddle を見ることができます: http://jsfiddle.net/22CzQ/4/

于 2012-04-30T18:25:06.410 に答える
0
<div id="elements">
    <div id="element-0"></div>
    <div id="element-1"></div>
    <div id="element-2"></div>
    <input id="element-3"></div> // your markup has error here remove the </div>
    <div id="element-4"></div>
    <div id="element-5"></div>
    <div id="element-6"></div>
</div>


$('#elements').children().each(function(index, val) {
  $(this).attr('id', 'element-' + index);
});
于 2012-04-30T17:51:44.400 に答える