123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- /**
- * jQuery EasyUI 1.3.6
- *
- * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
- *
- * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt
- * To use it on other terms please contact us at info@jeasyui.com
- *
- */
- /**
- * linkbutton - jQuery EasyUI
- *
- */
- (function($){
-
- function createButton(target) {
- var opts = $.data(target, 'linkbutton').options;
- var t = $(target).empty();
-
- t.addClass('l-btn').removeClass('l-btn-plain l-btn-selected l-btn-plain-selected');
- t.removeClass('l-btn-small l-btn-medium l-btn-large').addClass('l-btn-'+opts.size);
- if (opts.plain){t.addClass('l-btn-plain')}
- if (opts.selected){
- t.addClass(opts.plain ? 'l-btn-selected l-btn-plain-selected' : 'l-btn-selected');
- }
- t.attr('group', opts.group || '');
- t.attr('id', opts.id || '');
-
- var inner = $('<span class="l-btn-left"></span>').appendTo(t);
- if (opts.text){
- $('<span class="l-btn-text"></span>').html(opts.text).appendTo(inner);
- } else {
- $('<span class="l-btn-text l-btn-empty"> </span>').appendTo(inner);
- }
- if (opts.iconCls){
- $('<span class="l-btn-icon"> </span>').addClass(opts.iconCls).appendTo(inner);
- inner.addClass('l-btn-icon-'+opts.iconAlign);
- }
-
- t.unbind('.linkbutton').bind('focus.linkbutton',function(){
- if (!opts.disabled){
- $(this).addClass('l-btn-focus');
- }
- }).bind('blur.linkbutton',function(){
- $(this).removeClass('l-btn-focus');
- }).bind('click.linkbutton',function(){
- if (!opts.disabled){
- if (opts.toggle){
- if (opts.selected){
- $(this).linkbutton('unselect');
- } else {
- $(this).linkbutton('select');
- }
- }
- opts.onClick.call(this);
- }
- return false;
- });
- // if (opts.toggle && !opts.disabled){
- // t.bind('click.linkbutton', function(){
- // if (opts.selected){
- // $(this).linkbutton('unselect');
- // } else {
- // $(this).linkbutton('select');
- // }
- // });
- // }
-
- setSelected(target, opts.selected)
- setDisabled(target, opts.disabled);
- }
-
- function setSelected(target, selected){
- var opts = $.data(target, 'linkbutton').options;
- if (selected){
- if (opts.group){
- $('a.l-btn[group="'+opts.group+'"]').each(function(){
- var o = $(this).linkbutton('options');
- if (o.toggle){
- $(this).removeClass('l-btn-selected l-btn-plain-selected');
- o.selected = false;
- }
- });
- }
- $(target).addClass(opts.plain ? 'l-btn-selected l-btn-plain-selected' : 'l-btn-selected');
- opts.selected = true;
- } else {
- if (!opts.group){
- $(target).removeClass('l-btn-selected l-btn-plain-selected');
- opts.selected = false;
- }
- }
- }
-
- function setDisabled(target, disabled){
- var state = $.data(target, 'linkbutton');
- var opts = state.options;
- $(target).removeClass('l-btn-disabled l-btn-plain-disabled');
- if (disabled){
- opts.disabled = true;
- var href = $(target).attr('href');
- if (href){
- state.href = href;
- $(target).attr('href', 'javascript:void(0)');
- }
- if (target.onclick){
- state.onclick = target.onclick;
- target.onclick = null;
- }
- opts.plain ? $(target).addClass('l-btn-disabled l-btn-plain-disabled') : $(target).addClass('l-btn-disabled');
- } else {
- opts.disabled = false;
- if (state.href) {
- $(target).attr('href', state.href);
- }
- if (state.onclick) {
- target.onclick = state.onclick;
- }
- }
- }
-
- $.fn.linkbutton = function(options, param){
- if (typeof options == 'string'){
- return $.fn.linkbutton.methods[options](this, param);
- }
-
- options = options || {};
- return this.each(function(){
- var state = $.data(this, 'linkbutton');
- if (state){
- $.extend(state.options, options);
- } else {
- $.data(this, 'linkbutton', {
- options: $.extend({}, $.fn.linkbutton.defaults, $.fn.linkbutton.parseOptions(this), options)
- });
- $(this).removeAttr('disabled');
- }
-
- createButton(this);
- });
- };
-
- $.fn.linkbutton.methods = {
- options: function(jq){
- return $.data(jq[0], 'linkbutton').options;
- },
- enable: function(jq){
- return jq.each(function(){
- setDisabled(this, false);
- });
- },
- disable: function(jq){
- return jq.each(function(){
- setDisabled(this, true);
- });
- },
- select: function(jq){
- return jq.each(function(){
- setSelected(this, true);
- });
- },
- unselect: function(jq){
- return jq.each(function(){
- setSelected(this, false);
- });
- }
- };
-
- $.fn.linkbutton.parseOptions = function(target){
- var t = $(target);
- return $.extend({}, $.parser.parseOptions(target,
- ['id','iconCls','iconAlign','group','size',{plain:'boolean',toggle:'boolean',selected:'boolean'}]
- ), {
- disabled: (t.attr('disabled') ? true : undefined),
- text: $.trim(t.html()),
- iconCls: (t.attr('icon') || t.attr('iconCls'))
- });
- };
-
- $.fn.linkbutton.defaults = {
- id: null,
- disabled: false,
- toggle: false,
- selected: false,
- group: null,
- plain: false,
- text: '',
- iconCls: null,
- iconAlign: 'left',
- size: 'small', // small,large
- onClick: function(){}
- };
-
- })(jQuery);
|