69 lines
2.8 KiB
JavaScript
69 lines
2.8 KiB
JavaScript
/*
|
|
* Author: Gopal Joshi
|
|
* Website: www.sgeek.org
|
|
*/
|
|
|
|
(function($) {
|
|
$.fn.Sswitch = function(element, options ) {
|
|
this.$element = $(this);
|
|
|
|
this.options = $.extend({}, $.fn.Sswitch.defaults, {
|
|
state: this.$element.is(":checked"),
|
|
disabled: this.$element.is(":disabled"),
|
|
readonly: this.$element.is("[readonly]"),
|
|
parentClass: this.$element.data("parent"),
|
|
onSwitchChange: element.onSwitchChange
|
|
},options);
|
|
|
|
this.$container = $("<div>", {
|
|
"class": (function(_this){
|
|
return function(){
|
|
var classes;
|
|
classes = [_this.options.parentClass];
|
|
classes.push(_this.options.state ? "" + _this.options.parentClass + "-on" : "" + _this.options.parentClass + "-off");
|
|
if (_this.options.disabled) {
|
|
classes.push("" + _this.options.parentClass + "-disabled");
|
|
}
|
|
if (_this.options.readonly) {
|
|
classes.push("" + _this.options.parentClass + "-readonly");
|
|
}
|
|
if (_this.$element.attr("id")) {
|
|
classes.push("" + _this.options.parentClass + "-id-" + (_this.$element.attr("id")));
|
|
}
|
|
return classes.join(" ");
|
|
};
|
|
})(this)()
|
|
});
|
|
this.$label = $("<span>", {
|
|
html: this.options.labelText,
|
|
"class": "" + this.options.parentClass + "-label"
|
|
});
|
|
this.$container = this.$element.wrap(this.$container).parent();
|
|
this.$element.before(this.$label);
|
|
|
|
return this.$container.on("click", (function(_this) {
|
|
return function(event) {
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
if (_this.options.readonly || _this.options.disabled) {
|
|
return _this.target;
|
|
}
|
|
_this.options.state = !_this.options.state;
|
|
_this.$element.prop("checked", _this.options.state);
|
|
_this.$container.addClass(_this.options.state ? "" + _this.options.parentClass + "-on" : "" + _this.options.parentClass + "-off").removeClass(_this.options.state ? "" + _this.options.parentClass + "-off" : "" + _this.options.parentClass + "-on");
|
|
_this.options.onSwitchChange.call(_this);
|
|
return _this;
|
|
};
|
|
})(this));
|
|
return this.$element;
|
|
},
|
|
$.fn.Sswitch.defaults = {
|
|
text : 'Default Title',
|
|
fontsize : 10,
|
|
state: true,
|
|
disabled: false,
|
|
readonly: false,
|
|
parentClass: "s-switch",
|
|
onSwitchChange: function() {}
|
|
};
|
|
}(jQuery)); |