2012-12-13 74 views
11

這些在速度方面是否相等?jQuery鏈接性能

$(this).attr("date",date); 
$(this).attr("date_start",date_start); 
$(this).attr("heure_start",heure_start); 

$(this).attr("date",date).attr("date_start",date_start).attr("heure_start",heure_start); 

即使第二快是它更好地寫分開,使代碼更易讀?

回答

26

不,這兩者在速度上並不相同。

$(this)每次都會建立一個新的jQuery對象。根據什麼是this,這可能是一個複雜的操作。

所以第二種形式更快。

注意,爲了可讀性,你可以把它寫成

$(this) 
    .attr("date",date) 
    .attr("date_start",date_start) 
    .attr("heure_start",heure_start); 

如果無法鏈的操作,因爲你必須在兩者之間的代碼其他線路,也可以緩存的對象。這是通常的:

var $this = $(this); 
$this.attr("date", date); 
$this.attr("date_start", date_start); 
$this.attr("heure_start", heure_start); 

而且還要注意attr可以採取圖作爲參數:

$(this).attr({ 
    date: date, 
    date_start: date_start, 
    heure_start: heure_start 
}); 
+0

當格式正確時也更容易閱讀IMO –

+3

這是一個完整的解釋! –

5

爲了提高可讀性,你可以行分裂,

$(this) 
    .attr("date",date) 
    .attr("date_start",date_start) 
    .attr("heure_start",heure_start); 

我知道這應該已經是一個評論,但間隔將是沒有意義的。