2010-06-18 78 views
1

很简单的问题:我想优化与最大的可读性,最佳性能和最低做文章以下jQuery代码(做文章=声明新的变量等):用(或类似)语句

$(".addthis_toolbox").append('<a class="addthis_button_delicious"></a>'); 
$(".addthis_toolbox").append('<a class="addthis_button_facebook"></a>'); 
$(".addthis_toolbox").append('<a class="addthis_button_google"></a>'); 
$(".addthis_toolbox").append('<a class="addthis_button_reddit"></a>'); 
. 
. 
. 
$(".addthis_toolbox").append('<a class="addthis_button_yetanotherservice"></a>'); 

回答

0

JavaScript并有with声明:

with($(".addthis_toolbox")) 
{ 
    append('<a class="addthis_button_delicious"></a>'); 
    ... 
} 

您可能会遇到有关变量的作用域using with语句虽然有些令人困惑的问题。

你可以用链接来实现同样的事情:

$(".addthis_toolbox").append('<a class="addthis_button_delicious"></a>') 
        .append(...) 
        .append(...); 
+0

是否有人downvote这个答案吗? – 2010-06-18 14:40:10

+0

@Salman A - 是的。不知道为什么。 – 2010-06-18 14:40:48

+1

我没有倒下,但是JavaScript社区几乎一致谴责'with'语句是一个非常糟糕的主意。它不是**“优化”,因为它通常导致性能不佳。它也可能导致内存泄漏。真的,这不是一个好主意。 – Pointy 2010-06-18 14:52:50

6

你可以只保留链接相同的jQuery对象上,像这样:

$(".addthis_toolbox").append('<a class="addthis_button_delicious"></a>') 
        .append('<a class="addthis_button_facebook"></a>') 
        .append('<a class="addthis_button_google"></a>') 
        .append('<a class="addthis_button_reddit"></a>'); 
+0

甚至更​​好:只是追加一个包含所有这些元素的字符串。 – 2010-06-18 14:29:20

+1

@Andy - 对这个例子*表示同意*,但可能在这里玩别的东西。如果有很多'.addthis_toolbox'元素,但是不确定问题的“...”部分是什么,那么这个锚点的单个字符串将会是一个缓存文档片段,在这里给出了不错的性能提升:) – 2010-06-18 14:31:09

+0

@Andy:是的,这是性能最好的方式,但会降低可读性。 – 2010-06-18 14:45:51