óCoffeeScript Cookbook

Create a jQuery Plugin

Problem

You’d like to create jQuery plugin using CoffeeScript

Solution

# Reference jQuery
$ = jQuery

# Adds plugin object to jQuery
$.fn.extend
  # Change pluginName to your plugin's name.
  pluginName: (options) ->
    # Default settings
    settings =
      option1: true
      option2: false
      debug: false

    # Merge default settings with options.
    settings = $.extend settings, options

    # Simple logger.
    log = (msg) ->
      console?.log msg if settings.debug

    # _Insert magic here._
    return @each ()->
      log "Preparing magic show."
      # You can use your settings in here now.
      log "Option 1 value: #{settings.option1}"

Discussion

Here are a couple of examples of how to use your new plugin.

JavaScript

$("body").pluginName({
  debug: true
});

CoffeeScript:

$("body").pluginName
  debug: true