2012-12-13 7 views
11

Sind diese gleichbedeutend mit Geschwindigkeit?jQuery Verkettung Leistung

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

oder

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

Auch wenn die zweite schneller ist, ist es besser, es zu schreiben trennt den Code besser lesbar zu machen?

Antwort

26

Nein, die beiden sind nicht gleich in der Geschwindigkeit.

$(this) erstellt jedes Mal ein neues jQuery-Objekt. Und je nachdem, was this ist, kann dies eine komplexe Operation sein.

So ist die zweite Form schneller.

Hinweis für bessere Lesbarkeit, dass Sie es als

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

schreiben Wenn Sie die Vorgänge nicht Kette können, weil Sie andere Zeilen Code haben zwischendurch, können Sie auch das Objekt zwischenspeichern. Dies ist üblich:

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

Und beachten Sie auch, dass attr Karte als Argument nehmen:

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

Und auch einfacher zu lesen, wenn richtig formatiert IMO –

+3

Das ist eine vollständige Erklärung! –

5

Für Lesbarkeit Sie die Linie

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

spalten konnte ich weiß, das sollte Es war ein Kommentar, aber der Abstand hätte keinen Sinn ergeben.