将类添加到具有特定类不起作用的div的所有子级

时间:2014-05-18 08:10:30

标签: javascript jquery html css

我正在尝试在具有特定类的几个div中添加div,即".description" 然后,我希望每个内部div具有不同的类,但它仅适用于具有上述类的第一个div 这是代码:

function addDescriptionFields() {
    var i=0;
    for(i=1; i<=3; i++) {
        $(".description").append("<div></div>");
    }
    $(".description").each(function() {
        $(".description div").eq(0).addClass("game-name");
        $(".description div").eq(1).addClass("game-description");
        $(".description div").eq(2).addClass("game-popularity");
    });
}

因此,结果是类".description"的第一个div具有指定类中的所有div,但其他div则没有。 有人知道我做错了吗?

2 个答案:

答案 0 :(得分:2)

each()循环没用,因为你正在进行$(".description div").eq(0),它只选择该集合中的第一个元素,而不是每个.description中的第一个元素。

您必须将其更改为此类

function addDescriptionFields() {

    for(var i=1; i<=3; i++) {
        $(".description").append("<div></div>");
    }
    $(".description").each(function() {
        $("div", this).eq(0).addClass("game-name");
        $("div", this).eq(1).addClass("game-description");
        $("div", this).eq(2).addClass("game-popularity");
    });
}

更好的方法是做

function addDescriptionFields() {
    var classes     = ["game-name", "game-description", "game-popularity"],
        description = $(".description");

    $.each(classes, function(_, klass) {
        description.append("<div class='"+klass+"' />");
    }
}

答案 1 :(得分:0)

它应该是这样的: var descClasses = [“game-name”,“game-description”,“game-popular”]; $('。description&gt; div')。每个 (function(index){$(this).addClass(descClasses [index])});