Skip to content

Instantly share code, notes, and snippets.

@jacquescrocker
Forked from jimeh/jquery.myplugin.coffee
Created April 10, 2011 21:49
Show Gist options
  • Save jacquescrocker/912762 to your computer and use it in GitHub Desktop.
Save jacquescrocker/912762 to your computer and use it in GitHub Desktop.
$ = jQuery
$.fn.extend
myplugin: (options) ->
self = $.fn.myplugin
opts = $.extend {}, self.default_options, options
$(this).each (i, el) ->
self.init el, opts
self.log el if opts.log
$.extend $.fn.myplugin,
default_options:
color: 'red'
log: true
init: (el, opts) ->
this.color el, opts
color: (el, opts) ->
$(el).css('color', opts.color)
log: (msg) ->
console.log msg
(function() {
var $;
$ = jQuery;
$.fn.extend({
myplugin: function(options) {
var opts, self;
self = $.fn.myplugin;
opts = $.extend({}, self.default_options, options);
return $(this).each(function(i, el) {
self.init(el, opts);
if (opts.log) {
return self.log(el);
}
});
}
});
$.extend($.fn.myplugin, {
default_options: {
color: 'red',
log: true
},
init: function(el, opts) {
return this.color(el, opts);
},
color: function(el, opts) {
return $(el).css('color', opts.color);
},
log: function(msg) {
return console.log(msg);
}
});
}).call(this);
$ = jQuery
$ ->
$('#world').myplugin();
(function() {
var $;
$ = jQuery;
$(function() {
return $('#world').myplugin();
});
}).call(this);
@jacquescrocker
Copy link
Author

Really should be setting $ explicitly on top. See: https://gist.github.com/912762

This is similar to the pattern you see in jQuery often:

(function($) {

  $.fn.plugin = function(){}

})(jQuery);

@jimeh
Copy link

jimeh commented Apr 11, 2011

True, I did see a few things about that, but at the same time, my example worked in a little test html file of mine without it, so I decided to leave it out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment