そのため、ユーザーが新しい要素を動的に作成するWebページを作成しています。要素が作成されると、各要素オブジェクトが配列に追加され、それらを追跡します。重要なのは、誰かが要素を閉じたときに、その要素を配列から削除したいということです。私が考えることができる唯一の方法は、各要素に配列内のインデックスと同等のIDを与えることです。これが厄介になったり、悪い習慣になったりする可能性があるように感じます。代替手段はありますか?それともこれで大丈夫ですか?
3 に答える
それは動的ではなく動的ではありません。
要素が一意である場合は、1つの理由で要素にIDを指定する必要があります。その要素タイプの1つだけの場合(「タイプ」とは、タグ名などではなく、意味的にタイプを意味します。たとえば、複数のサイドバーまたは見出しが存在する可能性がありますが、1つ#mainNav
またはのみ#generalWrapper
です)。
動的に作成するすべての要素にIDを与えることは、定義上、間違っています。非常によく似た要素を作成する可能性が高いため、この場合、クラス名の方が適切です。
それらを追跡する方法が必要な場合は、必要data-*=
なカスタムデータでいつでも属性を使用できます。例えば:data-id=1
IDの使いすぎについては大きな議論があります。
私の提案はdata
、次のような属性を使用することです。
<li data-id="54">My element</li>
次に、Javascriptを使用して要素を簡単に操作(削除、変更など)できます。jQueryには、data()
たとえばメソッドがあります-http://api.jquery.com/jQuery.data/
クラスまたはIDを使用することに対する私の主な議論は、(この場合)特定の関数の要素に関する情報を探しているのに対し、クラスまたはIDは、よりグローバルなレベルで要素を区別するのに適しているということです。
ユーザーが要素の追加または削除を完了するまで待ってから、jQueryの$.each関数などを使用できます。たとえば、ユーザーがdivに追加した一連の入力から値を収集する場合は、単純に実行できます。
var myArray = [];
$('#mydiv input').each(function(){
//Do something here with each of the inputs
myArray.push($(this).val());
});
ある種の属性をそれらに単純に追加したい場合でも、これと同じ関数を使用できます
$('#mydiv input').each(function(index){
//Do something here with each of the inputs
$(this).attr('data-id', index);
});
あなたがそのアレイを何に使用しようとしているのかわからないので、私はあなたのためにあなたの質問に答えたことを願っています。ある時点で、ある種の提出を想定しました。