2012-05-30 57 views
0

我在这里有一个函数,循环两个包装,然后通过它的各自的孩子循环,并引发它一个数字列出的项目按数字顺序。我没有使用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++); 
    }); 
}); 
+0

有到变种'B = ++没有优势; $(本)。html的(B);'。你只是在浪费记忆。 – lanzz

回答

4

这个怎么样?

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

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

+1

在OP代码中'i'从1开始:P –

+0

'.each'中传递的'e'是什么? – Sethen

+1

这是索引的DOM元素。所以你也可以编写'$(e).html(i + 1);'而不是'$(this).html(i + 1);' –

0

,我可能会写为:

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

的发现真的是没有必要要么,使语句更长。

1

尝试像下面,

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

DEMO

+0

我真的很喜欢这个。一个不错的方法。 –

+0

我从来没有见过它写成像'$(“。howToStepNumber”,$(“。articleContentWrapper”))'这是如何工作的? – Sethen

+1

它等同于'$( “articleContentWrapper”)。找到( '.howToStepNumber')' –

相关问题