(function($) { var pluginName = "checkable"; var defaultOptions = { childrenSelector: "li", selectedClass: "checked" }; var methods = { initialize: function (opts, sources) { return this.each(function() { var options = $.extend({}, defaultOptions, opts); $(this).on("click", options.childrenSelector, function(evt) { $(evt.currentTarget).toggleClass(options.selectedClass); }); }); } }; var privateMethods = { }; $.fn[pluginName] = function (method) { if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || ! method) { return methods.initialize.apply(this, arguments); } else { $.error('Method ' + method + ' does not exist on jQuery.' + pluginName); } }; })(jQuery);