Most, hogy megvizsgáltuk a jQuery bővítmények használatát, érdemes megérteni, hogyan kell ezeket felépíteni. Már röviden kitértünk arra, hogy ha akarja, kibővítheti a natív jQuery objektumot. Akárcsak:
$.myFunction = function() ( console.log("I am a function on the jQuery object."); ); // call it $.myFunction();
De ez önmagában nem különösebben hasznos. Egy új módszer létrehozásához a jQuery számára, amely meghívhat egy elemkészletet, ezt kell tennie:
$.fn.myMethod = function() ( // I'm a new method ));
Ez pontosan ugyanaz, mint a .prototype használata a jQuery-n, és a kíváncsiskodók számára erről itt olvashat bővebben. Ilyen módon azt jelenti, hogy képesek leszünk használni az új módszert egy elemcsoportra. Tetszik:
$("li").myMethod();
A módszer mellett bármit megtehet, de ahhoz, hogy egy jó jQuery pluginépítő állampolgár legyen, vissza kell küldenie ugyanazokat az elemeket a pluginból.
$.fn.myMethod = function() ( // Do some stuff return this; ));
Így a láncolással működni fog. Ha nem így tesz, és valaki megpróbálta a következőket:
$ („Li”). MyMethod (). Show ();
Ez kudarcot vallana, mert .show()
lényegében semmire sem hívnák fel. A jQuery beépülő modulok gyakran úgy vannak kialakítva, hogy az egyes elemeket átgördítsék, így a készlet minden egyes eleméhez közvetlenül hozzáférhetsz, amire szükséged van.
Egy másik jó állampolgári tennivaló egy plugin beágyazása az azonnali meghívott funkciókifejezésbe, és a jQuery paraméterként átadás. Így biztonságosabb módon használhatja a plugin-kódban lévő $ -ot. Ennek oka, hogy bizonyos esetekben a $ gyorsírás a jQuery számára nem érhető el (pl. Egy felhasználó a kompatibilitási módban használta a jQuery-t).
Az utóbbi két dolog mindkét helyén a beépülő modul felépítése:
(function($) ( $.fn.myMethod = function() ( return this.each(function() ( // do things )); ); ))(jQuery)
A képernyőképernyőn végül egy egyszerű plugint készítettünk, amely nyílot ad hozzá bármely elem végéhez.
Lásd Chris Coyier (@chriscoyier) toll rwasH-ját a CodePen-en
Természetesen ez bonyolultabbá válhat, mivel az a törekvés, hogy többet tegyen, felmegy.