使用jquery为现有div分配id

时间:2014-06-29 03:53:22

标签: javascript jquery html dom

我正在尝试将id分配给页面上的div,div不是动态创建的,而是一次写在页面上,我需要将随机id分配给我页面上存在的div。 尝试过很多东西,但无法得到解决方案..在html页面上,div存在于名为demo的类中,而div已经分配了id = mydiv。然后调用脚本并将divs id从mydiv更改为随机数..我无法将+1添加到下一个div。 尝试jquery遍历如下所示nextall(),但它不会将+1添加到新div ..

function handledivIds() {
    var e = $(".demo #mydiv");
    var t = randomNumber();
    var n = "div-",t;
    e.attr("id", n);    
    e.nextall().attr("id", n+1)
    }

function randomNumber() {
    return '' + new Date().getTime();
}

4 个答案:

答案 0 :(得分:2)

尝试更改此

var e = $(".demo #mydiv");

到这个

var e = $(".demo div");

ID仅适用于一个元素,因此#myDiv只会返回div元素之一......永远。

还包括Jai的答案。

答案 1 :(得分:1)

Demo

  • n+1无法使用字符串,所有下一个div将与.nextAll()获得相同的ID。
  • 还使用+ - var n = "div-"+t;
  • 进行连接
  • 使用.each()来迭代div个元素。

试试这个,

function handledivIds() {
    var e = $(".demo div");
    var t = randomNumber();

    e.each(function (index) {
       $(this).attr("id", "div-" + (t + index))
    });
}

function randomNumber() {
    return '' + new Date().getTime();
}

答案 2 :(得分:0)

改变这个:

var n = "div-",t;

到此:

var n = "div-";

您可能希望在此处以及在nextAll()附加1字符串的字符串中连接字符串。


或者您可以将功能更新为:

function handledivIds() {
    $(".demo div").each(function(i, it){
        $(this).attr('id', "div-"+$(this).index()); // assigns unique ids per div
    });
}

答案 3 :(得分:0)

首先 - 使用日期不是随机的。它将提供可预测的增加值。如果您需要一些真正随机的东西,那么最好为DIV ID服务器端分配一个实际的随机数生成器。如果您可以使用伪随机数,请使用Math.random而不是时间。为了保证唯一性,您可以同时使用时间和随机数。包含时间,因为它单调增加,将保证唯一值,而伪随机数将给它随机质量。如果您需要真正随机,请使用加密强大的随机数生成器服务器端。

其次,您的原始div不能都具有相同的起始ID。最好给他们一个类服务器端,然后使用该类来识别它们。

 <div class="needs-random-id"></div>

最后,nextAll将相同的属性应用于所有匹配的元素。您可能想要使用each

  var max = 9007199254740990;
  var min = 1;
  $('div.needs-random-id').each(function() {
      var time = new Date().getTime();
      var idValue = 'div-' 
                       + time + '-' 
                       + Math.floor(Math.random() * max) + min;
      $(this).attr('id', idValue);
  });