123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- /**
- * EasyUI for jQuery 1.5.5.6
- *
- * Copyright (c) 2009-2018 www.jeasyui.com. All rights reserved.
- *
- * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
- * To use it on other terms please contact us: info@jeasyui.com
- *
- */
- /**
- * linkbutton - EasyUI for jQuery
- *
- */
- (function($){
- function setSize(target, param){
- var opts = $.data(target, 'linkbutton').options;
- if (param){
- $.extend(opts, param);
- }
- if (opts.width || opts.height || opts.fit){
- var btn = $(target);
- var parent = btn.parent();
- var isVisible = btn.is(':visible');
- if (!isVisible){
- var spacer = $('<div style="display:none"></div>').insertBefore(target);
- var style = {
- position: btn.css('position'),
- display: btn.css('display'),
- left: btn.css('left')
- };
- btn.appendTo('body');
- btn.css({
- position: 'absolute',
- display: 'inline-block',
- left: -20000
- });
- }
- btn._size(opts, parent);
- var left = btn.find('.l-btn-left');
- left.css('margin-top', 0);
- left.css('margin-top', parseInt((btn.height()-left.height())/2)+'px');
- if (!isVisible){
- btn.insertAfter(spacer);
- btn.css(style);
- spacer.remove();
- }
- }
- }
-
- 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 l-btn-outline');
- 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.outline){t.addClass('l-btn-outline')}
- 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:;');
- }
- 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');
- $(this)._propAttr('disabled', false);
- $(this).bind('_resize', function(e, force){
- if ($(this).hasClass('easyui-fluid') || force){
- setSize(this);
- }
- return false;
- });
- }
-
- createButton(this);
- setSize(this);
- });
- };
-
- $.fn.linkbutton.methods = {
- options: function(jq){
- return $.data(jq[0], 'linkbutton').options;
- },
- resize: function(jq, param){
- return jq.each(function(){
- setSize(this, param);
- });
- },
- 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','text',{plain:'boolean',toggle:'boolean',selected:'boolean',outline:'boolean'}]
- ), {
- disabled: (t.attr('disabled') ? true : undefined),
- text: ($.trim(t.html()) || undefined),
- iconCls: (t.attr('icon') || t.attr('iconCls'))
- });
- };
-
- $.fn.linkbutton.defaults = {
- id: null,
- disabled: false,
- toggle: false,
- selected: false,
- outline: false,
- group: null,
- plain: false,
- text: '',
- iconCls: null,
- iconAlign: 'left',
- size: 'small', // small,large
- onClick: function(){}
- };
-
- })(jQuery);
|