1

配列を使用して動的にリンクのリストを作成しています。これにより、次のようになります。

<div>
   <p class="link">label</p>
   <p class="link">label</p>
   <p class="link">label</p>
   <p class="link">label</p>
   <p class="link">label</p>
</div>
<div>
   <p class="link">label</p>
   <p class="link">label</p>
   <p class="link">label</p>
   <p class="link">label</p>
   <p class="link">label</p>
</div>

次に、クリックハンドラーがあります。

$(".link").click(function(){
//do something
 myarray[?].stuff;
});

配列から何かを取得したいのですが、リンクを参照するのが最善の方法かわかりません。配列キーをpタグのIDとして追加することもできますが、より洗練された方法で処理できるかどうか疑問に思っています。

4

2 に答える 2

0

インデックスを使用することもできますが、それによって次のことがわかります。

<div>
   <p class="link">label</p> //0
   <p class="link">label</p> //1
</div>
<div>
   <p class="link">label</p> //0
   <p class="link">label</p> //1
</div>

//js
$(".link").on('click', function(){
    myarray[$(this).index()].stuff;
});

次のように、親のインデックスも使用できます。

<div>
   <p class="link">label</p> //0
   <p class="link">label</p> //1
</div>
<div>
   <p class="link">label</p> //10
   <p class="link">label</p> //11
</div>

//js
$(".link").on('click', function(){
    var numb = parseFloat($(this).parent().index().toString() + $(this).index().toString());
    myarray[numb]);
});​

フィドル

またはデータ属性

<div>
   <p class="link" data-i="0">label</p>
   <p class="link" data-i="1">label</p>
</div>
<div>
   <p class="link" data-i="2">label</p>
   <p class="link" data-i="3">label</p>
</div>

//js
$(".link").on('click', function(){
    myarray[$(this).data('i')].stuff;
});
于 2012-05-15T18:30:51.850 に答える
0

私はkey識別子としてを使用することに固執します(一般的に私は使用する傾向がありますが、どの属性に割り当てるかは実際には関係ありませんid)。このようにして、<p>' id(または割り当てた属性)は常に対応する配列プロパティと一致します。

過去の経験から、属性に何かを追加/追加することをお勧めします(特に、id要素の重複を防ぐために、このメソッドをid使用して、.replace()必要なものを除くすべてを削除する)。

于 2012-05-15T18:44:13.433 に答える