How to create a jQuery plugin
I tend to write everything i do in JavaScript as a jQuery plugin. Even if it's mostly useless, i think it's a convenient way to encapsulate the code. In this post I'll show how to make a simple plugin that replaces the background color of an element when the mouse hovers over it. In real life you would probably want to do this with CSS pseudo-classes.
Step 1 - Get ready
All plugins i write always starts with the same template:(function($){ $.fn.backgroundHover = function(options) { return this.each(function () { // Code goes here }); }; })(jQuery);Line 1 and 7 are only there to protect from $-function overloading by using variable scoping. On line 2 the plugin function is defined in the prototype of jQuery. fn is just an alias for prototype. Since a plugin can be applied to many DOM nodes in one call, we must loop through every element on line 3.
Step 2 - Get Set
Now we just need to write the actual code for the plugin. First we gonna add a couple of lines in the beginning of the plugin function to provide default values for the options.$.fn.backgroundHover = function(options) { options = $.extend({ background: 'red', }, options);Then we add some code inside the each-function:
var self = $(this); self.mouseover(function() { self.oldBG = self.css('backgroundColor'); self.css('backgroundColor',options.background); }); self.mouseout(function() { self.css('backgroundColor',self.oldBG); });Line 1 is just a convenience variable that I usually define to get rid of unnecessary $-calls. Line 2-5 binds a function to the mouseover event. When the mouse is above the element the old background color is stored for later use and the new one is set. Line 7-9 restores the original background color of the element when a mouseout event is triggered.
Step 3 - Go!
That's it, the plugin is finished! And all that's left is to use it:jQuery("#special").backgroundHover( { background: '#306090' } );The complete source is as follows:
(function($){ $.fn.backgroundHover = function(options) { options = $.extend({ background: 'red', }, options); return this.each(function () { var self = $(this); self.mouseover(function() { self.oldBG = self.css('backgroundColor'); self.css('backgroundColor',options.background); }); self.mouseout(function() { self.css('backgroundColor',self.oldBG); }); }); }; })(jQuery);
Comments
http://remind.com.br/projetos/criar-blog-gratis/ureplicawatches/
http://remind.com.br/projetos/criar-blog-gratis/ureplicawatches1987/
http://replbags.livejournal.com/
http://replcawatche.livejournal.com/
http://repldbags.livejournal.com/
http://replica69bags.insanejournal.com/
http://replicabag242.livejournal.com/
http://replicacheap.21classes.com/weblogCategory/1951uut1lrg4t
http://replicacheap.ayubd.com/