题
我已经使用了$。每次我们做了一段时间的迭代,但我一直在听人说用于做循环本地JS。我很关心性能,但我不知道,如果它总是有可能与以有意义的方式来代替$。每。
所以我的问题是,是否有可能总是与替换$。每次,如果没有什么经验的时候可以做它的规则,当它不能。
我有一个每个这样的:
$this.find("div.class").each(function (){
var $thisparent = $(this).parent();
if (condition) {
$(this).prepend($thisparent.text());
}
if (condition2) {
$(this).prepend($thisparent.text());
}
});
解决方案
这是什么jQuery不会与.each
,基本上:
$.fn.each = function(callback) {
var i, length = this.length;
for(i = 0; i < length; ++i) {
callback.call(this[i]);
}
};
所以不难与callback.call
调用替换您的匿名功能的“内容”。只要确保与jQuery对象用临时替换this
。
转换你提供的代码:
var foo = $this.find("div.class"),
fooLength = foo.length,
i,
$thisparent;
for (i = 0; i < fooLength; ++i) {
$thisparent = $(foo[i]).parent();
if (condition) {
$(foo[i]).prepend($thisparent.text());
}
if (condition2) {
$(foo[i]).prepend($thisparent.text());
}
}
有关附加的(潜在)速度,高速缓存foo[i]
到临时。过了,只在需要时分配$thisparent
。如果condition
和condition2
是互斥的,使用单个if (condition || condition2)
。
其他提示
不隶属于 StackOverflow