!function ($, doc) { var each = function (arr, fn) { for (let i = 0; i < arr.length; i++) { fn(arr[i], i) } } var amSwitch = {} var _toggleCallback var toggle = function (elm) { var isActive = elm.classList.contains('am-active') if (isActive) { elm.classList.remove('am-active') } else { elm.classList.add('am-active') } return { id: elm.dataset['switch'], isActive: elm.classList.contains('am-active') } } var handleEvent = function (e) { var disabled = this.classList.contains('am-disabled') if (disabled) return switch (e.type) { case 'click': var event = toggle(this) _toggleCallback && _toggleCallback.bind(this)(event) break; default: break; } } var _init = function () { var switches = doc.querySelectorAll('.am-switch') each(switches, function (elm, i) { if (!elm.dataset['switch']) { elm.dataset['switch'] = i } elm.addEventListener('click', handleEvent) elm.handle = elm.querySelector('.am-switch-handle') }) } _init() amSwitch.toggle = function (toggleFn) { _toggleCallback = toggleFn } amSwitch.val = function (id) { var elms = doc.querySelectorAll('.am-switch[data-switch="' + id + '"]') if (elms && elms.length > 0) { return elms[0].classList.contains('am-active') } else { return false } } $.amSwitch = amSwitch }(window, document)