Jquery:给每个Div一个个人ID

时间:2012-01-20 16:02:17

标签: jquery

我有一组具有相同类的div。我需要给每个人一个个人ID。然后将该ID应用于链接的href。

这是HTMl:

<div class="person-promo">
  <a href="***#ID-OF-SIBLING-DIV***" class="action">&gt; Read More</a>
  <div class="hide">
    <div id="***NUMBER-GOES-HERE***" class="person-details">
      <!-- -->
    </div>
  </div>
</div><!-- Person Promo -->

如果有意义,每个锚都需要链接到它的兄弟Div。

我一直在各种网站和Jquery图书馆打猎几个小时,但没有运气。希望得到一些帮助。

顺便感谢大家的帮助。很高兴知道某些开发人员会在遇到困难时互相帮助。这是一个很棒的社区。

5 个答案:

答案 0 :(得分:2)

足够简单:

// Loop through the divs
$(".person-promo .person-details").each(function(i) {
    // Store an id with format "uniqueId_{index}" in a variable.
    var id = "uniqueId_" + i;
    // Give the ID to the div
    $(this).attr("id", id);
    // Give it to the sibling link
    $(this).siblings("a").attr("href", "#" + id);
});

那就是说,你应该生成所有这些服务器端。

答案 1 :(得分:1)

使用计数器似乎有点矫枉过正,因为无论如何都有可用的内置索引号......

$(".person-promo").each(function(Index) {
    $(this).find("action").attr("href", "#person" +Index);
    $(this).find(".person-details").attr("id", "person" + Index);
});

答案 2 :(得分:0)

我想你可以做到:

var i = 0;
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$('.person-promo').each(function(){
    var theID = str.charAt(i);
    i++;
    $(this).find('a.action').attr("href", "#"+theID);
    $(this).find('.person-details').attr("id", theID);
});

不要忘记,你不应该使用整数作为ID

答案 3 :(得分:0)

var id = 0;
$('a').each(function() {
    $(this).attr('href','#anchor' + id);
    $(this).find('div').attr('id','anchor' + id);
    id++;
});

答案 4 :(得分:-1)

您还可以将点击事件绑定到<a>元素,以找到像这样的特定div

$('a.action').click(function(e) {
  e.preventDefault();
  var div_details = $(this).parent().find('.person-details');
  // use div_details to show or hide etc..
})