Skip to content

Instantly share code, notes, and snippets.

@ahorner
Last active December 29, 2015 01:49
Show Gist options
  • Save ahorner/7596483 to your computer and use it in GitHub Desktop.
Save ahorner/7596483 to your computer and use it in GitHub Desktop.
A partial replacement for iCheck.js
$ = jQuery
$.fn.extend
iCheck: (options = {})->
settings =
checkboxClass: "icheck-checkbox"
radioClass: "icheck-radio"
checkedClass: "checked"
uncheckedClass: "unchecked"
disabledClass: "disabled"
settings = $.extend(settings, options)
settings = $.extend
checkedCheckboxClass: settings.checkedClass
checkedRadioClass: settings.checkedClass
uncheckedCheckboxClass: settings.uncheckedClass
uncheckedRadioClass: settings.uncheckedClass
disabledCheckboxClass: settings.disabledClass
disabledRadioClass: settings.disabledClass
, settings
$radios = @filter("[type=radio]")
$checkboxes = @filter("[type=checkbox]")
$radios.closest("label")
.addClass("#{settings.radioClass} #{settings.uncheckedRadioClass}")
$checkboxes.closest("label")
.addClass("#{settings.checkboxClass} #{settings.uncheckedCheckboxClass}")
$radios.filter("[disabled]").closest("label")
.addClass(settings.disabledRadioClass)
$checkboxes.filter("[disabled]").closest("label")
.addClass(settings.disabledCheckboxClass)
$radios.filter(":checked").closest("label")
.removeClass(settings.uncheckedRadioClass)
.addClass(settings.checkedRadioClass)
$checkboxes.filter(":checked").closest("label")
.removeClass(settings.uncheckedCheckboxClass)
.addClass(settings.checkedCheckboxClass)
$radios.on "click", ->
$radios.filter("[name='#{$(@).attr("name")}']").closest("label")
.removeClass(settings.checkedRadioClass)
.addClass(settings.uncheckedRadioClass)
$(@).closest("label")
.removeClass(settings.uncheckedRadioClass)
.addClass(settings.checkedRadioClass)
$checkboxes.on "click", ->
if $(@).prop("checked")
$(@).closest("label")
.toggleClass(settings.uncheckedCheckboxClass)
.addClass(settings.checkedCheckboxClass)
else
$(@).closest("label")
.removeClass(settings.checkedCheckboxClass)
.addClass(settings.uncheckedCheckboxClass)
$radios.hide()
$checkboxes.hide()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment