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>的 's id(或您分配给它的任何属性)将始终与相应的数组属性匹配。

根据过去的经验,在属性中附加/添加某些内容通常是一个好主意(特别是如果它是id, 以防止重复 element id,然后使用该.replace()方法删除除您需要的所有内容之外的所有内容)

于 2012-05-15T18:44:13.433 回答