当两者实现相同的事情时,编写此代码的首选方法是什么?

时间:2012-05-30 20:30:02

标签: javascript jquery

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

哪种方式更好地实现这一目标,通过这种方式或其他方式有哪些优点/缺点?使用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 个答案:

答案 0 :(得分:4)

这个怎么样?

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

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

答案 1 :(得分:1)

var wrapper = $(".articleContentWrapper");
$(".howToStepNumber", wrapper).text( function (i) { 
    return ( i % (wrapper.length + 1) ) + 1;
});​

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

答案 2 :(得分:1)

尝试如下,

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

DEMO

答案 3 :(得分:0)

我可能会把它写成:

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

查找确实没有必要,并使声明更长。