1

我正在尝试遍历具有 ID #color-lines 的元素列表和每个元素的唯一类,如下所示:<div id="color-lines" class="block-2088">唯一类由 WordPress 的帖子 ID 动态驱动,因此每个块都是唯一的。

在每个 div 中都有不同数量的<a>标签,我试图根据每个 div 中有多少子元素对每个标签使用 addClass。

    $( "#color-lines" ).each(function(){

        var className = $( this ).attr("class");
        var anchoLink = ( "." + className );

        var n = $( anchoLink ).children().length;

        $( anchoLink ).children().addClass( "line-width-" + n );

    });

我得到的是每个 div 元素的每个<a>标签都具有相同的类line-with-n,即使每个 div 中有不同数量的<a>元素。

4

3 回答 3

2

切换你的 ID 和类,换句话说,ID 应该是唯一的,类应该用于类似的元素。each()您可以为具有相同类的元素编写循环:

$(".color-lines").each(function() {
    var n = $(this).children.length;
    $(this).children("a").addClass("line-width-" + n);
});
于 2013-06-03T13:48:55.550 回答
1

ID's必须是唯一的,同时class可以重复。

使用idas 选择器仅返回 1 个项目,因此$('#color-lines).each仅循环通过第一个#color-lines.

于 2013-06-03T13:45:12.330 回答
0

虽然我同意 ID 应该是唯一的规则,但您可能需要做的是在您的 DIV 选择器上添加一个 find() 调用。在此示例中,我假设您交换了类和 ID 属性。

$( ".color-lines" ).each(function(){

    $( this ).find("a").addClass( "line-width-" + $(this).children().length );

});
于 2013-06-03T13:48:29.207 回答