jQuery addClass()到append()后生成的元素

时间:2012-10-16 21:48:10

标签: javascript jquery

我正在尝试将一个类添加到新添加的DIV中,而不使用类似的东西:

t.y.append('<div class="lol'+i+'"></div>');

以下是我正在尝试做的更好的例子:

var t = this;

$(this.x).each(function(i, obj) {
    //append new div and add class too <div></div>
    t.y.append('<div></div>').addClass('lol'+i);
});

页面加载HTML如下所示:

<div class=".slideButton0 .slideButton1 .slideButton2" id="sliderNav">
    <div></div>
    <div></div>
    <div></div>
</div>

7 个答案:

答案 0 :(得分:12)

当您通过.append追加元素时,它不会更改jQuery对象的上下文。

你可以这样写:

$('<div></div>').appendTo(t.y).addClass('lol'+i);

$('<div></div>').addClass('lol'+i).appendTo(t.y);

(这些都做同样的事情,只是在不同的顺序,第二个可能更清楚)

jQuery对象的上下文将是新创建的div。

答案 1 :(得分:7)

t.y.append('<div></div>').addClass('lol'+i);

应该是

t.y.append('<div></div>').find('div').addClass('lol'+i);

在第一种情况下,您要将类添加到要追加的div中。 因此,上下文仍然是父div 而不是新附加的 div ..

您需要先在父级内部找到它,然后添加该类..

修改

如果您只想将类添加到最后添加的元素中...找到父级中的最后一个div,然后将该类添加到它中。 这将确保您在循环中每次迭代时都不会将类添加到所有div中。

t.y.append('<div></div>').find('div:last').addClass('lol'+i);

答案 2 :(得分:3)

试试这个:

t.y.append($('<div></div>').addClass('lol'+i));

小提琴:http://jsfiddle.net/gromer/QkTdq/

答案 3 :(得分:2)

var t = this;

$(this.x).each(function(i, obj) {
    //append new div and add class too <div></div>
    var d = $('<div />').addClass('lol' + i);
    t.y.append(d);
});

答案 4 :(得分:1)

问题是append返回容器而不是刚刚附加到容器上的容器。我会在addClass之前append 而不是之后执行var t = this; $(this.x).each(function(i, obj) { //append new div and add class too <div></div> t.y.append($('<div></div>').addClass('lol'+i)); });

{{1}}

编辑 ......换句话说,正是格罗默所说的。打了我整整五分钟。我变慢了。

答案 5 :(得分:0)

您没有提到为什么要将class属性编号为列表项,但是如果您实际上将它们用于css,请不要忘记您有:odd和:even css选择器attritbutes以及等效的奇/偶jQuery选择器。

http://www.w3.org/Style/Examples/007/evenodd.en.html
http://api.jquery.com/odd-selector/

答案 6 :(得分:0)

我没有找到类似的东西。注意class属性!

$.each(obj, function (_index, item) {
    resultContainer.append($('<li>', {
      class: "list-group-item",
      value: item.id,
      text: item.permitHolderName || item.permitHolderId
    }));
});