如何制作具有特定Id + n的新div?

时间:2010-05-01 19:50:36

标签: jquery dynamic loops

我有一个按钮,推送时此代码启动:

  

var nrDivs =“1”
  var neuDiv = document.createElement(“div”);
      neuDiv.setAttribute(“Id”,“theDiv”+ nrDivs);
      neuDiv.innerHTML =“文字”;
      $( '#allDivs')附加(neuDiv);

     

newfeed.draw(neuDiv);

我知道现在脚本会创建一个ID为div的新div:theDiv1。 我想要做的是当我第二次单击该按钮时,它会创建一个ID为div的div:.Div2。

每次用户按下按钮时,都应该绘制一个新的div,我正在尝试定位新的div并插入动态文本。

谢谢,Noor

4 个答案:

答案 0 :(得分:2)

你可以在这里使用更多的jQuery,但我保持它与你的几乎相同,只添加足以做你想做的事。

请注意,这会计算div中的所有#allDivs元素。如果有一些你不想计算,那么必须采取另一种方法。

$(document.ready(function() {

    $('#myButton').click(function() {     // On page load, assign click event handler to your button

        var nrDivs = $('div', '#allDivs').length + 1;    // Retrieve all 'div' elements within '#allDivs', and get its length plus 1
        var neuDiv = document.createElement("div");
        neuDiv.setAttribute("Id","theDiv" + nrDivs);
        neuDiv.innerHTML = "Text";
        $('#allDivs').append(neuDiv);
        newfeed.draw(neuDiv);

    });

});

修改

更像jQuery的方式:

$(document.ready(function() {

    $('#myButton').click(function() {     // On page load, assign click event handler to your button

        var nrDivs = $('div', '#allDivs').length + 1;    // Retrieve all 'div' elements within '#allDivs', and get its length plus 1
        var $neuDiv = $('<div>').attr('id','theDiv' + nrDivs)
                                .text("Text")
                                .appendTo('#allDivs');
        newfeed.draw(neuDiv);

    });

});

修改

jQuery中的选择器非常强大,并且提供了很大的灵活性。

例如,上面一行获取div下的所有#allDivs元素可以重写为:

$('#allDivs div').length + 1;

......这完全一样。

如果您只想获得div的直接子项#allDivs元素,请使用:

$('#allDivs > div').length + 1;

$('#allDivs').children('div').length + 1;

另一种选择是为这些div元素提供一个可用作选择器的特殊类。因此,例如,当您创建要添加到div的新#allDivs时,请执行以下操作:

var $neuDiv = $('<div>').attr('id','theDiv' + nrDivs)
                                .addClass('topDiv')
                                .text("Text")
                                .appendTo('#allDivs');

现在div中的顶级#allDivs元素将有一个名为`topDiv'的类,您可以在选择器中引用它,如下所示:

$('#allDivs .topDiv').length + 1;

...只返回具有类div的{​​{1}}个元素。

这只是在jQuery中使用选择器可以做的事情的表面。

希望这有帮助。

答案 1 :(得分:1)

首先,您可以将nDivs设为全局变量,并在每次创建div时将其递增。

您还可以使用jquery选择器获取所有div,然后使用length来获取计数,您可以为新div添加一个。

答案 2 :(得分:0)

要向div添加新ID,请执行此操作。

默认情况下,它是var nr Divs =“1” Onclick do:n ++;

答案 3 :(得分:0)

要么命名nDivs一个全局变量(通常使用全局变量很糟糕,但它可以工作),并且每次运行此代码时都会增加它。

或者更好的是,将此代码设为closure,能够访问nDivs