Вече говорихме няколко пъти за малки щрихи в jQuery API, които наистина са доста приятни. Всичко е добре обмислено и усъвършенствано. Веригирането определено попада в тази категория. След като започнете да го използвате и го разберете, той се чувства изключително естествен, сякаш не трябва да има друг начин.
Основната идея е, че използвате няколко метода подред в една колекция от елементи.
Например, да кажем, че след като щракна върху бутон, искам да променя клас, както и да променя малко текст. Но бутонът има малко HTML вътре.
Open
С jQuery можем да „обединим“ цялата поредица от действия заедно.
$(".button") .removeClass("open") .addClass("closed") .find(".text") .text("Closed");
Това е възможно, тъй като повечето от методите на jQuery, докато се използват като сетер, връщат набор от елементи точно като този, за който е бил извикан методът. Понякога този набор е абсолютно същият, както е случаят с removeClass
и addClass
тук, а понякога този набор е променен, както е случаят тук find
.
В примера, с който работихме във видеото, говорихме и за това, .end()
което „отстъпва“ едно ниво на веригата.
$(".button") .removeClass("open") // .button .addClass("closed") // .button .find(".text") // .button .text .text("Closed") // .button .text .end(); // .button .data("thing"); // GETTER on .button
Може би това го обяснява по-добре. Когато наборът от елементи се промени, направих отстъп на първия ред и отбелязах промяната в коментара. След това, когато се .end()
отдръпнем, се отдръпваме на едно ниво. Това работи, независимо колко пъти променяте селекцията. Всичко свършва, когато използвате метод, който връща нещо различно от набор от елементи.