# 27: Izgradnja jednostavnog dodatka za jQuery - CSS-trikovi

Anonim

Sad kad smo pogledali korištenje dodataka jQuery, apsolutno vrijedi razumjeti kako ih i graditi. Već smo se kratko dotaknuli činjenice da možete proširiti izvorni objekt jQuery ako želite. Baš kao:

$.myFunction = function() ( console.log("I am a function on the jQuery object."); ); // call it $.myFunction();

Ali to samo po sebi nije posebno korisno. Da biste stvorili novu metodu za jQuery koju možete pozivati ​​na skupu elemenata, morat ćete to učiniti ovako:

$.fn.myMethod = function() ( // I'm a new method ));

To je potpuno ista stvar kao i korištenje .prototype na jQueryju, a za znatiželjnike, više o tome možete pročitati ovdje. Čineći to na taj način znači da ćemo tu novu metodu moći koristiti na nizu elemenata. Kao:

$("li").myMethod();

U toj metodi možete raditi što god želite, ali da biste bili dobar građanin gradnje dodatka za jQuery, trebali biste vratiti isti skup elemenata iz dodatka.

$.fn.myMethod = function() ( // Do some stuff return this; ));

Na taj način to će funkcionirati s ulančavanjem. Ako to ne učinite, a netko je probao nešto poput:

$ ("Li"). MyMethod (). Show ();

To bi propalo, jer .show()se u osnovi ne bi ni na što pozivalo. Često su dodaci jQuery oblikovani da vrte petlju preko svakog elementa tako da imate izravan pristup svakom pojedinom elementu u skupu da biste učinili kako trebate.

Još jedna dobra stvar koju treba učiniti jest zamotati dodatak u izraz s neposrednim pozivom i predati jQuery kao parametar. Na taj način možete sigurnije koristiti $ unutar vašeg koda dodatka. To je zato što u nekim situacijama $ kratica za jQuery nije dostupna (npr. Korisnik je koristio jQuery u "načinu kompatibilnosti").

S obje posljednje dvije stvari na mjestu, struktura dodatka postaje:

(function($) ( $.fn.myMethod = function() ( return this.each(function() ( // do things )); ); ))(jQuery)

U screencast-u smo na kraju izgradili jednostavan dodatak za dodavanje strelice na kraj bilo kojeg elementa.

Pogledajte Pen rwasH Chrisa Coyiera (@chriscoyier) na CodePenu

Naravno, može postati složenije kako vaša ambicija učiniti više raste.