在重复生成的html块中使用id来导航元素?

时间:2012-11-18 02:25:10

标签: jquery html dynamically-generated

例如,我有html块:

<div class="span3">
  <div class="firstDiv"></div>
</div>
<div class="span3">
  <div class="secondDiv"></div>
</div>

这个html块的副本可以使用javascript插入,所以我有大量的这些块一个接一个。

我想听听是否将id放在所有这些元素上以便与它们一起工作的观点是一种标准/有效的方法。我有一个很好的方法可以在生成的元素上放置带有匹配后缀的唯一ID,例如:

  ...
  <div class="span3">
    <div id="firstDiv_154 class="firstDiv""></div>
  </div>
  <div class="span3">
    <div id="secondDiv_154 class="secondDiv""></div>
  </div>

  <div class="span3">
    <div id="firstDiv_155 class="firstDiv""></div>
  </div>
  <div class="span3">
    <div id="secondDiv_155" class="secondDiv"></div>
  </div>
  ...

然后作为一般规则,当我点击集合中的firstDiv时,对secondDiv做一些事我可以做:

$('.firstDiv').on ('click', function(evt) {
  var idToFind = $(evt.target).attr('id').replace(/firstDiv/, /#secondDiv/)
  var $secondDiv = $(idToFind);
  // do something with $secondDiv
});

是否有更有效的方法来使用id?

如果不使用id,我可以使用jQuery:

如果我想从第一个元素中找到第二个元素:

$('.firstDiv').parent().next().children()

如果我重新排列元素会破坏, 或

$('.firstDiv').closest('.span3').find('.secondDiv')

哪个更强大,但可能比第一个jQuery方法更耗费资源。

您(有经验的网络开发者)会推荐哪一种方法?

1 个答案:

答案 0 :(得分:0)

这取决于你想要完成的事情。如果您需要一种唯一标识元素的方法,并且当前设置中没有其他方法可以这样做,那么唯一ID是一个很好的方法。