Return to Snippet

Revision: 12103
at March 2, 2009 16:01 by johnloy


Initial Code
/*  
From the article http://www.learningjquery.com/2007/10/a-plugin-development-pattern
*/

//
// create closure
//
(function($) {
	//
	// plugin definition
	//
	$.fn.hilight = function(options) {
		debug(this);
		// build main options before element iteration
		var opts = $.extend({}, $.fn.hilight.defaults, options);
		// iterate and reformat each matched element
		return this.each(function() {
			$this = $(this);
			// build element specific options
			var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
			// update element styles
			$this.css({
				backgroundColor: o.background,
				color: o.foreground
			});
			var markup = $this.html();
			// call our format function
			markup = $.fn.hilight.format(markup);
			$this.html(markup);
		});
	};
	//
	// private function for debugging
	//
	function debug($obj) {
		if (window.console && window.console.log)
		window.console.log('hilight selection count: ' + $obj.size());
	};
	//
	// define and expose our format function
	//
	$.fn.hilight.format = function(txt) {
		return '<strong>' + txt + '</strong>';
	};
	//
	// plugin defaults
	//
	$.fn.hilight.defaults = {
		foreground: 'red',
		background: 'yellow'
	};
//
// end of closure
//
})(jQuery);

Initial URL

                                

Initial Description

                                

Initial Title
Skeleton for a JQuery plugin

Initial Tags
javascript, textmate, jquery

Initial Language
Other