0

我在这里有一个函数,它循环通过两个包装器,然后循环通过它各自的子级并抛出一个数字以按数字顺序列出项目。我决定使用 each jQuery 函数,而不是使用 for 循环。这是我的问题:

哪种方式更好地实现这一目标,采用一种方式或另一种方式有哪些优点/缺点?使用for循环更好吗?

这个:

$(".articleContentWrapper").each( function () { 
    var i = 1;
    $(this).find(".howToStepNumber").each(function () {
        var b = i++;
        $(this).html(b);
    });
});

或这个:

$(".articleContentWrapper").each( function () { 
    var i = 1;
    $(this).find(".howToStepNumber").each(function () {
        $(this).html(i++);
    });
});
4

4 回答 4

4

这个怎么样?

$(".articleContentWrapper").each( function () { 
    $(this).find(".howToStepNumber").each(function (i, e) {
        $(this).html(i + 1);
    });
});

.each()方法已经提供了一个索引持有者,因此您不需要自己创建一个。

于 2012-05-30T20:32:15.277 回答
1
var wrapper = $(".articleContentWrapper");
$(".howToStepNumber", wrapper).text( function (i) { 
    return ( i % (wrapper.length + 1) ) + 1;
});​

http://jsfiddle.net/kVUBu/1/

于 2012-05-30T20:34:50.110 回答
1

尝试如下,

$(".howToStepNumber", $(".articleContentWrapper")).html( function () {
    return $(this).index() + 1;
});

演示

于 2012-05-30T20:39:33.900 回答
0

我可能会把它写成:

$(".articleContentWrapper").each( function () { 
    $(".howToStepNumber", this).each(function (i) {
        $(this).html(i);  // or i+1 depending on what you want
    });
});

find 也确实没有必要,并且会使语句更长。

于 2012-05-30T20:34:46.467 回答