2013-03-06 157 views
2

jQuery中方法鏈接的缺點和優點是什麼?jQuery中方法鏈接的缺點和優點是什麼?

它比重新聲明選擇器更快嗎?方法鏈接的

+0

爲了使這個更具體的問題:鏈接*而不是什麼?* – deceze 2013-03-06 06:23:54

+0

我說在第二行,對重新宣佈選擇。 – 2013-03-06 07:12:48

+0

'i = $('foo'); i.bar(); i.baz();'?你認爲這個鏈接?因爲這只是鏈接操作的長處。 – deceze 2013-03-06 07:25:24

回答

2

最有可能的優點是,

,它使你的代碼簡短易manage.It提供更好的性能(速度)。 鏈條從左到右。所以最左邊的將被稱爲第一個等等。

當使用鏈接時,JQuery必須找到一次元素,它會逐個執行所有連接的函數。

鏈接的缺點可能會使用它不必要的太多,然後它可能會導致性能下降。

如: - 代碼1:

​$(document).ready(function(){ 
    $('#myContent').addClass('hello'); 
    $('#myContent').css('color', 'blue'); 
    $('#myContent').fadeOut('fast'); 
});​ 

代碼2:

$(document).ready(function(){ 
    $('#myContent').addClass('hello') 
      .css('color', 'blue') 
      .fadeOut('fast');  
});​ 

這兩種代碼做同樣的事情。而代碼2使用鏈接,代碼更快更短。在代碼1中,JQuery必須搜索整個DOM來查找元素,然後在其上執行該函數。

+2

我意識到你在做什麼,但在第一個例子中說jQuery「必須搜索整個DOM」有點誤導......內部jQuery將在此調用getElementById()情況,這是一個非常快速的操作,雖然它仍然有點像數組查找,所以第二個例子的速度非常快。這會對類選擇器和其他更復雜的選擇器產生更多的不同,特別是在較舊的瀏覽器中。 – 2013-03-06 07:40:48

1

優點:

  1. 選擇器僅針對多個操作計算一次。更好的性能,更小的代碼。
  2. 選擇器結果可用於多種方法,無需將其分配給局部變量。更緊湊的代碼。
  3. 多種方法可以更緊湊地放在一條線上。
  4. 當您想要對連續不同的結果進行操作時(例如$(this).next().find("span.title").closest(".section").hide();),可以更加緊湊。如果沒有鏈接,你需要四個不同的局部變量,而這些變量都不需要。鏈接的

缺點:

  1. 的選擇結果尚未保存在一個局部變量的更復雜的應用不僅可以用鏈接來完成。
  2. 在一行上編寫太多連續的鏈接方法會延長代碼的可讀性,如果它延長以生成非常長的代碼行。 (人們仍然可以使用鏈接,但只需在鏈接中插入偶然的換行符就可以避免這種情況)。
+0

謝謝你的回覆jfriend – 2013-03-06 07:35:13

1

是的,與將jQuery對象存儲在變量中相比,速度可能更快,但速度更快。

例如這樣的:

var elements = $('.myClass').find('p'); 
elements.next() 

應該是一樣快,這一點:

$('.myClass').find('p').next()

大部分可以歸結爲可讀性的時候......有時方法鏈接使得代碼更易讀,但如果你帶走,它可以使少於可讀。

+0

感謝您的回覆Matt B. – 2013-03-06 07:34:50

相關問題