/* ======================================================================== * menu-collapse * ======================================================================== */ +function ($) { $.fn.menucollapse = function (){ var $this = $(this), $a = $this.find('li>a'); if($this.is('.menu-collapse-infeed')){ $this.on('mouseenter',"li",function(){ $(this).addClass('curr').children('ul.sub-menu').show(); }).on('mouseleave',"li",function(){ $(this).removeClass('curr'); if($(this).data('click')){ $(this).addClass('curr'); } $(this).children('ul.sub-menu').hide(); }).on('click','a',function(){ $(this).parents('.menu-li').data('click',true).siblings().removeClass('curr').data('click',false); }); }else{ $this.on('click',"li>a",function(){ if($this.data('retract')){ if($(this).is('.curr')){ return false; } } $this.find('a').removeClass('curr'); $(this).addClass('curr'); if($(this).parent().parent().parent().children('a').length>0){ $(this).parent().parent().parent().children('a').addClass('curr'); } $(this).parent('li').parent('ul').find('li').each(function(index, element) { $(this).children('a').find('span.arrow').html(''); $(this).find('ul.sub-menu').slideUp(); }); var $arrow=$(this).find('span.arrow'), $ul=$(this).parent().children('ul.sub-menu'); if($ul.length>0){ if($ul.css('display')=="none"){ $ul.slideDown(); $arrow.html(''); }else{ $ul.slideUp(); $arrow.html(''); } } }); } return this; }; $('div[data-nav="menu"]').menucollapse(); }(jQuery); /* ======================================================================== * tabs * ======================================================================== */ +(function($){ $.fn.tabs = function(options){ if(this.length == 0) return this; if(this.length > 1){ this.each(function(){$(this).tabs(options)}); return this; } if($(this).data('binds')=='yes') return false; $(this).data('binds','yes'); var defaults={ "hdChildren":'a', "bdChildren":'div.tabs-bd-box', "events":'click' }; var opts=$.extend(defaults,options || {}); var $this=$(this), el=this, $hd=$this.children('div.tabs-hd').children(opts.hdChildren), $bd=$this.children('div.tabs-bd').children(opts.bdChildren); if($this.data('toggle-tabs')){ $hd.on(opts.events,function(){ var $el=$(this), index=$el.index(); $el.addClass('curr').siblings().removeClass('curr'); $bd.eq(0).find('iframe').attr('src',$el.data('src')); if(opts.callback){ opts.callback(index,$this); } }); }else{ $hd.on(opts.events,function(){ var $el=$(this), index=$el.index(); $el.addClass('curr').siblings().removeClass('curr'); $bd.eq(index).addClass('curr').siblings().removeClass('curr'); if(opts.callback){ opts.callback(index,$this); } }); } el.goTo = function (index,toOpts){ $hd.eq(index).addClass('curr').siblings().removeClass('curr'); $bd.eq(index).addClass('curr').siblings().removeClass('curr'); }; return this; }; $(document).on('mouseenter', '[data-toggle="tabs"]', function (e) { $(this).tabs(); }); })(jQuery); /* ======================================================================== * formSelect * ======================================================================== */ +function ($) { $.fn.formSelect = function (options,downBack,selectBack,initBack){ var defaultsettings= { jsonData:null, initialValue:null, jsonDataId:null, jsonDataText:null }; if(this.length == 0) return this; if(this.length > 1){ this.each(function(){$(this).formSelect(options,downBack,selectBack)}); return this; } if(typeof(options)=='string'){ var $this=$(this),_data=downBack; function setCurr(v){ if($this.find('a[data-value="'+_data+'"]').length<=0){ return false; } $this.children(".cus-sel-chosed").find(".cus-sel-chosed-txt").text(v.val).attr("data-value", v.key); $this.children('.cus-sel-chosed').find('input').val(v.key); $this.attr('value',v.key); $this.find('.cus-sel-list').find('a').removeClass('hover'); $this.find('.cus-sel-list').find('a[data-value="'+v.key+'"]').addClass('hover'); } switch(options) { case 'setDatas': setCurr(_data); break; case 'setDataKey': var setKey={}; setKey.key=_data; setKey.val= $.trim($this.find('.cus-sel-list').find('a[data-value="'+_data+'"]').text()); setCurr(setKey); break; case 'setDataVal': var setVal={}; setVal.val=_data; $this.find('.cus-sel-list').find('a').each(function(){ if($.trim($(this).text())==_data){ setVal.key= $(this).data('value'); } }); setCurr(setVal); break; case 'getDatas': var getData={}; getData.key = $this.children('.cus-sel-chosed').find('input').val(); getData.val = $.trim($this.children(".cus-sel-chosed").find(".cus-sel-chosed-txt").text()); return getData; break; case 'getDataKey': return $this.children('.cus-sel-chosed').find('input').val(); break; case 'getDataVal': return $.trim($this.children(".cus-sel-chosed").find(".cus-sel-chosed-txt").text()); break; case 'resetValue': $(this).find(".cus-sel-chosed").find(".cus-sel-chosed-txt").text('-请选择-').attr("data-value", ''); $(this).find('.cus-sel-chosed').find('input').val(''); $(this).attr('value',''); $(this).find('.cus-sel-list').find('a.hover').removeClass('hover'); break; case 'clearValue': $(this).find(".cus-sel-chosed").find(".cus-sel-chosed-txt").text('-请选择-').attr("data-value", ''); $(this).find('.cus-sel-chosed').find('input').val(''); $(this).attr('value',''); $(this).find('.cus-sel-list').find('ul').html(''); break; } return false; } var opts=$.extend(defaultsettings, options); var _this=$(this),tempStr='',el=this; if(_this.data('bind')){ _this.off('click','.cus-sel-chosed'); _this.children(".cus-sel-list").off("click","a"); }else{ _this.data('bind',true); } if(opts.jsonDataId && opts.jsonDataText){ $(opts.jsonData).each(function(i,data){ var idVal = eval('data.'+opts.jsonDataId), textVal = eval('data.'+opts.jsonDataText); if(idVal==''){ tempStr+='
  • '+textVal+'
  • '; }else if(idVal<=0){ tempStr+='
  • '+textVal+'
  • '; } }); $(opts.jsonData).each(function(i,data){ var idVal = eval('data.'+opts.jsonDataId), textVal = eval('data.'+opts.jsonDataText); if(idVal!='' && idVal>0) { tempStr+='
  • '+textVal+'
  • '; }else if (isNaN(idVal*1)){ tempStr+='
  • '+textVal+'
  • '; } }); _this.children('.cus-sel-list').children('ul').html(tempStr); }else if(opts.jsonData) { for(var key in opts.jsonData){ if(key==''){ tempStr+='
  • '+opts.jsonData[key]+'
  • '; }else if(key<=0){ tempStr+='
  • '+opts.jsonData[key]+'
  • '; } } for(var key in opts.jsonData){ if(key!='' && key>0) { tempStr+='
  • '+opts.jsonData[key]+'
  • '; }else if (isNaN(key*1)){ tempStr+='
  • '+opts.jsonData[key]+'
  • '; } } _this.children('.cus-sel-list').children('ul').html(tempStr); } if(opts.initialValue){ if(opts.initialValue.key==undefined){ for(var key in opts.initialValue){ _this.find('.cus-sel-chosed-txt').text(opts.initialValue[key]).attr("data-value", key); _this.find('.cus-sel-chosed').find('input').val(key); _this.find('.cus-sel-list').find('a[data-value="'+key+'"]').addClass('hover'); _this.attr('value',opts.initialValue.val); } }else{ _this.find('.cus-sel-chosed-txt').text(opts.initialValue.val).attr("data-value", opts.initialValue.key); _this.find('.cus-sel-chosed').find('input').val(opts.initialValue.key); _this.find('.cus-sel-list').find('a[data-value="'+opts.initialValue.key+'"]').addClass('hover'); _this.attr('value',opts.initialValue.val); } } _this.on('click','.cus-sel-chosed',function(){ if(_this.is('.disabled') || _this.is('.active')){ return false; } $(".cus-sel").removeClass("active").css({zIndex:1}); $(".cus-sel-list").hide(); $(this).parent(".cus-sel").addClass("active").css({zIndex:1000}); var bodyScrollTop=document.documentElement.scrollTop+document.body.scrollTop, domTop=_this.offset().top, bodyHeight=$(window).height(), listHeight=$(this).siblings('.cus-sel-list').outerHeight(true), chosedHeight=$(this).outerHeight(true); if(-(domTop+chosedHeight-bodyScrollTop-bodyHeight)'+data[key]+''; }else{ var idVal = eval('data[dataLength].'+opts.jsonDataId), textVal = eval('data[dataLength].'+opts.jsonDataText); if(idVal==''){ optionsHtml+='
  • '+textVal+'
  • '; }else if(idVal<=0){ optionsHtml+='
  • '+textVal+'
  • '; }else if(idVal!='' && idVal>0) { optionsHtml+='
  • '+textVal+'
  • '; }else if (isNaN(idVal*1)){ optionsHtml+='
  • '+textVal+'
  • '; } dataLength++; } } _this.children('.cus-sel-list').children('ul').html(optionsHtml); _this.find('.cus-sel-chosed-txt').text('-请选择-').attr("data-value", ''); _this.find('.cus-sel-chosed').find('input').val(''); _this.attr('value',''); } if(funback){ funback(_this); } }; return this; }; $("html,body").click(function (e) { var target = e.target; if ($(target).parents(".cus-sel").length == 0) { $(".cus-sel").removeClass("active").css({zIndex:1}); $(".cus-sel-list").hide(); } }); $(document).on('mouseenter', '[data-toggle="formSelect"]', function (e) { if($(this).data('mouseenter')) return false; $(this).data('mouseenter',true); $(this).formSelect(); }); }(jQuery); /* ======================================================================== * comboFormSelect * ======================================================================== */ +function ($) { $.fn.comboFormSelect = function (options,downBack){ if(this.length == 0) return this; if(this.length > 1){ this.each(function(){$(this).comboFormSelect(options,downBack)}); return this; } var _this = $(this), $list = _this.children('.cus-sel-list'), $input = _this.children('.cus-sel-chosed').children('input[type="text"]'), $txt = _this.find('.cus-sel-chosed-txt'), el = this, tempStr=''; if(typeof(options)=='string') { var _data = downBack, _tempVal = _tempName = ''; if(_this.data('combo')=='checkbox' || _this.data('combo')=='radio'){ switch (options) { case 'getKey': return _this.attr('value'); break; case 'getVal': return $txt.html(); break; case 'resetValue': if(_this.data('combo')=='checkbox'){ $list.find('label.checkbox').removeClass('checked').find(':checkbox').prop({'checked':false}); }else if(_this.data('combo')=='radio'){ $list.find('label.radio').removeClass('checked').find(':radio').prop({'checked':false}); } _this.attr('value',''); $input.val(''); $txt.html('-请选择-'); return; break; case 'clearValue': $list.html(''); return; break; } } switch(_this.data('combo')) { case 'checkbox': var $labelCheckbox = $list.find('label.checkbox'); $labelCheckbox.removeClass('checked').find(':checkbox').prop({'checked':false}); switch (options) { case 'setKey': $labelCheckbox.each(function(){ for(var i=0; i<_data.length; i++){ var _val = $(this).children('input').val(), _name = $(this).children('input').data('name'); if(_data[i] == _val){ _tempVal += _val+','; _tempName += _name+','; $(this).addClass('checked').find(':checkbox').prop({'checked':true}); } } }); break; case 'setVal': $labelCheckbox.each(function(){ for(var i=0; i<_data.length; i++){ var _val = $(this).children('input').val(), _name = $(this).children('input').data('name'); if(_data[i] == _name){ _tempVal += _val+','; _tempName += _name+','; $(this).addClass('checked').find(':checkbox').prop({'checked':true}); } } }); break; } _tempVal = _tempVal.substring(0,_tempVal.length-1); _tempName = _tempName.substring(0,_tempName.length-1); _this.attr('value',_tempVal); $input.val(_tempVal); $txt.html(_tempName); break; case 'radio': var $labelRadio = $list.find('label.radio'); $labelRadio.removeClass('checked').find(':radio').prop({'checked':false}); switch (options) { case 'setKey': $labelRadio.each(function(){ var _val = $(this).children('input').val(), _name = $(this).children('input').data('name'); if(_data == _val){ _tempVal = _val; _tempName = _name; $(this).addClass('checked').find(':radio').prop({'checked':true}); } }); break; case 'setVal': $labelRadio.each(function(){ var _val = $(this).children('input').val(), _name = $(this).children('input').data('name'); if(_data == _name){ _tempVal = _val; _tempName = _name; $(this).addClass('checked').find(':radio').prop({'checked':true}); } }); break; } _this.attr('value',_tempVal); $input.val(_tempVal); $txt.html(_tempName); break; } return false; } var defaultsettings= { jsonData:null, initialValue:null, jsonDataId:null, jsonDataText:null }; var opts=$.extend(defaultsettings, options); var isb; if(_this.data('combo')=='checkbox'){ isb = true; }else if(_this.data('combo')=='radio'){ isb = false; } function createTempStr(textVal,idVal){ var tempStrHtml = ''; if(isb){ tempStrHtml = '
  • '+ ''+ '
  • '; }else{ tempStrHtml = '
  • '+ ''+ '
  • '; } return tempStrHtml; } if(opts.jsonDataId && opts.jsonDataText){ $(opts.jsonData).each(function(i,data){ var idVal = eval('data.'+opts.jsonDataId), textVal = eval('data.'+opts.jsonDataText); if(idVal==''){ tempStr+=createTempStr(textVal,idVal); }else if(idVal<=0){ tempStr+=createTempStr(textVal,idVal); } }); $(opts.jsonData).each(function(i,data){ var idVal = eval('data.'+opts.jsonDataId), textVal = eval('data.'+opts.jsonDataText); if(idVal!='' && idVal>0) { tempStr+=createTempStr(textVal,idVal); }else if (isNaN(idVal*1)){ tempStr+=createTempStr(textVal,idVal); } }); _this.children('.cus-sel-list').find('ul').html(tempStr); } if(opts.initialValue){ var _initVal = _initName = ''; if(isb){ var $labelCheckbox = $list.find('label.checkbox'); $labelCheckbox.removeClass('checked').find(':checkbox').prop({'checked':false}); $labelCheckbox.each(function(){ for(var i=0; i' +'
    ' +'' +'
    ' +'
    '+$el.data('text')+'
    ' +'').appendTo('body'); errorTipsDom.css({'left':$el.offset().left+24,'top':$el.offset().top-5}).show(150); }).on('mouseleave', '[data-toggle="errorTips"]', function (e) { errorTipsDom.remove(); }); }(jQuery); /* ======================================================================== * c-btn-disable * ======================================================================== */ +(function($){ $(document).on("mouseenter",'[data-toggle="disableBtn"]',function (e) { if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false; $(this).off('click'); if($(this).attr('onclick')){ $(this).removeAttr('onclick'); } return false; }); })(jQuery); /* ======================================================================== * checkbox , radio * ======================================================================== */ +(function($){ $(document).on("click",'[data-toggle="checkbox"]',function (e) { if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false; if($(this).is('.disabled')||$(this).children('input').is(':disabled')){ return false; } $(this).toggleClass('checked'); if($(this).hasClass('checked')) { $(this).find(':checkbox').prop({'checked':true}); } else { $(this).find(':checkbox').prop({'checked':false}); } }); $(document).on("click",'[data-toggle="radio"]',function(e){ if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false; if($(this).is('.disabled')||$(this).children('input').is(':disabled')){ return false; } $(this).parent().find('.radio').removeClass('checked').find(':radio').prop({'checked':false}); $(this).addClass('checked').find(':radio').attr({'checked':"checked"}); }); })(jQuery); /* ======================================================================== * checkboxGroup * ======================================================================== */ +(function($){ $.fn.checkboxGroup = function (options){ var defaultsettings= { operate : null, opreateDataKey : null, opreateDataOther : null, elemClass : '.checkbox', oneElemClass : '', allElemClass : '', callBack : null }; if(this.length == 0) return this; if(this.length > 1){ this.each(function(){$(this).checkboxGroup(options)}); return this; } var opts = $.extend(defaultsettings, options), $this = $(this); if(typeof (opts.operate)=='string'){ switch(opts.operate) { case 'setKey': $this.find(opts.elemClass).removeClass('checked').find(':checkbox').prop({'checked':false}); $this.find(':checkbox').each(function(){ if(typeof (opts.opreateDataKey) == 'object'){ var $checkbox = $(this); $(opts.opreateDataKey).each(function(i,d){ if ($checkbox.val()==d){ $checkbox.parent().addClass('checked').find(':checkbox').attr({'checked':"checked"}); } }); } else if (typeof (opts.opreateDataKey) == 'number'){ if ($(this).val()==opts.opreateDataKey){ $(this).parent().addClass('checked').find(':checkbox').attr({'checked':"checked"}); } } }); return false; break; case 'getKey': var _val = ''; $this.find(':checkbox').each(function(){ if($(this).is(':checked')){ _val+=$(this).val()+','; } }); _val=_val.substring(0,_val.length-1); return _val; break; case 'other': var _val = ''; $this.find(':checkbox').each(function(){ if($(this).is(':checked')){ _val+=$(this).attr(opts.opreateDataOther)+','; } }); _val=_val.substring(0,_val.length-1); return _val; break; case 'reset': $this.find('label.checkbox').removeClass('checked').find(':checkbox').prop({'checked':false}); return false; break; } }else if (opts.operate === true){ //单击全选 checkbox $this.on('click',opts.allElemClass,function(e){ if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false; if($(this).is('.disabled')||$(this).children('input').is(':disabled')){ return false; } $(this).toggleClass('checked'); if($(this).hasClass('checked')) { $(this).find(':checkbox').prop({'checked':true}); } else { $(this).find(':checkbox').prop({'checked':false}); } if($(this).find(':checkbox').is(':checked')){ $this.find(opts.oneElemClass).each(function(){ $(this).addClass('checked'); $(this).find(':checkbox').prop({'checked':true}); }); }else{ $this.find(opts.oneElemClass).each(function(){ $(this).removeClass('checked'); $(this).find(':checkbox').prop({'checked':false}); }); } if(opts.callBack){ opts.callBack($(this)); } }); //单击单个 checkbox $this.on('click',opts.oneElemClass,function(e){ if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false; if($(this).is('.disabled')||$(this).children('input').is(':disabled')){ return false; } $(this).toggleClass('checked'); if($(this).hasClass('checked')) { $(this).find(':checkbox').prop({'checked':true}); } else { $(this).find(':checkbox').prop({'checked':false}); } var chekboxAll=true, $all=$this.find(opts.allElemClass); $this.find(opts.oneElemClass).each(function(){ if(!($(this).find(':checkbox').is(':checked'))){ chekboxAll=false; } }); if(chekboxAll){ $all.addClass('checked'); $all.find(':checkbox').prop({'checked':true}); }else{ $all.removeClass('checked'); $all.find(':checkbox').prop({'checked':false}); } if(opts.callBack){ opts.callBack($(this)); } }); } }; })(jQuery); /* ======================================================================== * radioGroup * ======================================================================== */ +(function($){ $.fn.radioGroup = function (options){ var defaultsettings= { operate : null, opreateDataKey : null, opreateDataOther : null, elemClass : '.radio' }; if(this.length == 0) return this; if(this.length > 1){ this.each(function(){$(this).radioGroup(options)}); return this; } var opts = $.extend(defaultsettings, options), $this = $(this); if(typeof (opts.operate)=='string'){ switch(opts.operate) { case 'setKey': $this.find(opts.elemClass).removeClass('checked').find(':radio').prop({'checked':false}); $this.find(':radio').each(function(){ if($(this).val()==opts.opreateDataKey){ $(this).parent().addClass('checked').find(':radio').attr({'checked':"checked"}); } }); return false; break; case 'getKey': var _val = null; $this.find('.radio').each(function(){ if($(this).is('.checked')){ _val=$(this).find('input:radio').val(); } }); return _val; break; case 'other': var _val = null; $this.find('.radio').each(function(){ if($(this).is('.checked')){ _val=$(this).find('input:radio').attr(opts.opreateDataOther); } }); return _val; break; case 'reset': $this.find('label.radio').removeClass('checked').find(':radio').prop({'checked':false}); return false; break; } } $this.on("click",opts.elemClass,function(e){ if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false; if($(this).is('.disabled')||$(this).children('input').is(':disabled')){ return false; } $this.find(opts.elemClass).removeClass('checked').find(':radio').prop({'checked':false}); $(this).addClass('checked').find(':radio').attr({'checked':"checked"}); if(opts.callBack){ opts.callBack($(this)); } }); }; })(jQuery); /* ======================================================================== * panels * ======================================================================== */ +(function($){ $.fn.panels = function (options){ var defaultsettings= { }; var opts=$.extend(defaultsettings, options); return this.each(function(){ var _this=$(this),el=this, $hd=_this.parents('div.c-panel-hd'), $bd=$hd.next('div.c-panel-bd'), $panel=_this.parents('div.c-panel'); switch (_this.data('toggle')) { case "panelCollapse": _this.on('click',function(){ if($bd.css('display')=='none'){ $bd.stop(true,false).slideDown("fast",function(){ _this.html(''); }); }else{ $bd.stop(true,false).slideUp("fast",function(){ _this.html(''); }); } }); break; case "panelremove": _this.on('click',function(){ $panel.remove(); }); break; } return this; }); }; $(document).on('mouseenter', '[data-toggle="panelCollapse"],[data-toggle="panelremove"]', function (e) { if($(this).data('mouseenter')) return false; $(this).data('mouseenter',true); $(this).panels(); }); })(jQuery); /* ======================================================================== * page-layout-menu * ======================================================================== */ +(function($){ $(document).ready(function(){ if($('div[data-toggle="pageLayoutMenu"]').length>0){ $(".page-layout-menu").height($(window).height()).niceScroll({cursorborder:"",cursorcolor:"#cccdd1"}); } }); })(jQuery); /* ======================================================================== * formReadonly 表单禁用、只读 * ======================================================================== */ +(function($){ $.fn.formReadonly = function (options,callback){ var defaultsettings= { readonlys : null }; var opts=$.extend(defaultsettings, options); return this.each(function(){ var _this = $(this), el = this; if(opts.readonlys == true){ _this.find('input.input-text').each(function(){ $(this).addClass('input-text-disabled').prop('disabled','disabled'); }); _this.find('textarea.textarea').each(function(){ $(this).addClass('textarea-disabled').prop('disabled','disabled'); }); _this.find('input.search').each(function(){ $(this).parent().addClass('input-search-disabled'); $(this).prop('disabled','disabled'); }); _this.find('.form-select').each(function(){ $(this).addClass('form-select-disabled').find('select').prop('disabled','disabled'); }); _this.find('.cus-sel').each(function(){ $(this).addClass('disabled'); }); _this.find('input.radio,input.checkbox').each(function(){ $(this).prop('disabled','disabled'); }); _this.find('input.datetimepicker').each(function(){ $(this).addClass('disabled'); $(this).datetimepicker('destroy'); }); _this.find('label.radio,label.checkbox').each(function(){ $(this).addClass('disabled').find('input').prop('disabled','disabled'); }); }else if (opts.readonlys == false){ _this.find('input.input-text').each(function(){ $(this).removeClass('input-text-disabled').prop('disabled',''); }); _this.find('textarea.textarea').each(function(){ $(this).removeClass('textarea-disabled').prop('disabled',''); }); _this.find('input.search').each(function(){ $(this).parent().removeClass('input-search-disabled'); $(this).prop('disabled',''); }); _this.find('.form-select').each(function(){ $(this).removeClass('form-select-disabled').find('select').prop('disabled',''); }); _this.find('.cus-sel').each(function(){ $(this).removeClass('disabled'); }); _this.find('input.radio,input.checkbox').each(function(){ $(this).prop('disabled',''); }); _this.find('label.radio,label.checkbox').each(function(){ $(this).removeClass('disabled').find('input').prop('disabled',''); }); _this.find('input.datetimepicker').each(function(){ $(this).removeClass('disabled'); }); } if(callback){ callback(); } return this; }); }; $(function(){ $('[data-toggle="formReadonly"]').formReadonly({readonlys:true}); }); })(jQuery); /* ======================================================================== * BtnDropdown * ======================================================================== */ !(function($,window,document,undefined){ var BtnDropdown = function(options,ele){ var defaults = { data: null, togglemethod:'' }, _this = this, ul, tempLis; _this.DOM = ele; _this.opts = $.extend({}, defaults, options); function isPercentage(num) { var patt = new RegExp(/^\d+%$/); return patt.test(num); } function bindTogglemethod(toggleMethod) { switch(toggleMethod) { case 'click': $(_this.DOM).on('click',function(){ $(this).toggleClass('dropdown-open'); if($(this).hasClass('dropdown-open')) { var dropdownMenu = $(this).children('.dropdown-menu').eq(0), dropdownMenuTop = isPercentage(dropdownMenu.css('top'))?parseFloat(dropdownMenu.css('top'))/100 * $(this).outerHeight():parseInt(dropdownMenu.css('top')); if(dropdownMenuTop>=0) { if($(window).scrollTop()+$(window).height()<$(this).offset().top + dropdownMenuTop + dropdownMenu.outerHeight(true)){ dropdownMenu.css({'top':-dropdownMenu.outerHeight()}); } } else { if($(window).scrollTop()>$(this).offset().top + dropdownMenuTop){ dropdownMenu.css({'top':dropdownMenu.css('top','')}); } } $(this).children('.dropdown-menu').show(); } else { $(this).children('.dropdown-menu').hide(); } }); break; case 'hover': $(_this.DOM).on('mouseenter',function(){ $(this).addClass('dropdown-open'); var dropdownMenu = $(this).children('.dropdown-menu').eq(0), dropdownMenuTop = isPercentage(dropdownMenu.css('top'))?parseFloat(dropdownMenu.css('top'))/100 * $(this).outerHeight():parseInt(dropdownMenu.css('top')); if(dropdownMenuTop>=0) { if($(window).scrollTop()+$(window).height()<$(this).offset().top + dropdownMenuTop + dropdownMenu.outerHeight(true)){ dropdownMenu.css({'top':-dropdownMenu.outerHeight()}); } } else { if($(window).scrollTop()>$(this).offset().top + dropdownMenuTop){ dropdownMenu.css({'top':dropdownMenu.css('top','')}); } } $(this).children('.dropdown-menu').show(); }).on('mouseleave',function(){ $(this).removeClass('dropdown-open').children('.dropdown-menu').hide(); }); break; //default: break; } } if(_this.opts.togglemethod) { bindTogglemethod(_this.opts.togglemethod); } else if(_this.DOM.getAttribute('data-togglemethod')!='') { bindTogglemethod(_this.DOM.getAttribute('data-togglemethod')); } else { bindTogglemethod('click'); } function isArrayFn(value){ //console.log(Object.prototype.toString.call(value)); if(typeof Array.isArray === "function") { return Array.isArray(value); } else { return Object.prototype.toString.call(value) === "[object Array]"; } } function render(data) { var i, dataLength = data.length, tempStr = ''; if(isArrayFn(data)) { for(i=0; i' + data[i].text + ''; break; case 'function': tempStr+='
  • ' + data[i].text + '
  • '; break; } } } } return tempStr; } ul = $(_this.DOM).children('.dropdown-menu').children('ul').eq(0); if(_this.opts.data!=null) { tempLis = render(_this.opts.data); ul.append(tempLis); } $.extend( _this, { show:function() { $(this.DOM).addClass('dropdown-open').children('.dropdown-menu').show(); }, hide:function() { $(this.DOM).removeClass('dropdown-open').children('.dropdown-menu').hide(); }, one:function() { if(this.opts.togglemethod === 'hover' || (this.opts.togglemethod === '' && this.DOM.getAttribute('data-togglemethod')==='hover')) { $(this.DOM).trigger('mouseenter'); } }, disable:function(arrDisableItems) { var i, arrLen; if(arrDisableItems != undefined) { for(i=0, arrLen=arrDisableItems.length; ia').each(function(){ var tempObjWithFn = $(this).clone(true,true), tempObj = $(this).clone(); tempObj.insertAfter($(this)).data('btnDropdownEle',tempObjWithFn); tempObj.get(0).setAttribute('onclick', null); $(this).remove(); }).end().on('click','.disabled>a',function(){ return false; }); }, enable:function(arrEnableItems){ var i, arrLen, tempEle; if(arrEnableItems != undefined) { for(i=0, arrLen=arrEnableItems.length; i