cross.ui.js 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294
  1. /* ========================================================================
  2. * menu-collapse
  3. * ======================================================================== */
  4. +function ($) {
  5. $.fn.menucollapse = function (){
  6. var $this = $(this),
  7. $a = $this.find('li>a');
  8. if($this.is('.menu-collapse-infeed')){
  9. $this.on('mouseenter',"li",function(){
  10. $(this).addClass('curr').children('ul.sub-menu').show();
  11. }).on('mouseleave',"li",function(){
  12. $(this).removeClass('curr');
  13. if($(this).data('click')){
  14. $(this).addClass('curr');
  15. }
  16. $(this).children('ul.sub-menu').hide();
  17. }).on('click','a',function(){
  18. $(this).parents('.menu-li').data('click',true).siblings().removeClass('curr').data('click',false);
  19. });
  20. }else{
  21. $this.on('click',"li>a",function(){
  22. if($this.data('retract')){
  23. if($(this).is('.curr')){
  24. return false;
  25. }
  26. }
  27. $this.find('a').removeClass('curr');
  28. $(this).addClass('curr');
  29. if($(this).parent().parent().parent().children('a').length>0){
  30. $(this).parent().parent().parent().children('a').addClass('curr');
  31. }
  32. $(this).parent('li').parent('ul').find('li').each(function(index, element) {
  33. $(this).children('a').find('span.arrow').html('<i class="iconfont">&#xe60f;</i>');
  34. $(this).find('ul.sub-menu').slideUp();
  35. });
  36. var $arrow=$(this).find('span.arrow'),
  37. $ul=$(this).parent().children('ul.sub-menu');
  38. if($ul.length>0){
  39. if($ul.css('display')=="none"){
  40. $ul.slideDown();
  41. $arrow.html('<i class="iconfont">&#xe60e;</i>');
  42. }else{
  43. $ul.slideUp();
  44. $arrow.html('<i class="iconfont">&#xe60f;</i>');
  45. }
  46. }
  47. });
  48. }
  49. return this;
  50. };
  51. $('div[data-nav="menu"]').menucollapse();
  52. }(jQuery);
  53. /* ========================================================================
  54. * tabs
  55. * ======================================================================== */
  56. +(function($){
  57. $.fn.tabs = function(options){
  58. if(this.length == 0) return this;
  59. if(this.length > 1){
  60. this.each(function(){$(this).tabs(options)});
  61. return this;
  62. }
  63. if($(this).data('binds')=='yes') return false;
  64. $(this).data('binds','yes');
  65. var defaults={
  66. "hdChildren":'a',
  67. "bdChildren":'div.tabs-bd-box',
  68. "events":'click'
  69. };
  70. var opts=$.extend(defaults,options || {});
  71. var $this=$(this),
  72. el=this,
  73. $hd=$this.children('div.tabs-hd').children(opts.hdChildren),
  74. $bd=$this.children('div.tabs-bd').children(opts.bdChildren);
  75. if($this.data('toggle-tabs')){
  76. $hd.on(opts.events,function(){
  77. var $el=$(this),
  78. index=$el.index();
  79. $el.addClass('curr').siblings().removeClass('curr');
  80. $bd.eq(0).find('iframe').attr('src',$el.data('src'));
  81. if(opts.callback){
  82. opts.callback(index,$this);
  83. }
  84. });
  85. }else{
  86. $hd.on(opts.events,function(){
  87. var $el=$(this),
  88. index=$el.index();
  89. $el.addClass('curr').siblings().removeClass('curr');
  90. $bd.eq(index).addClass('curr').siblings().removeClass('curr');
  91. if(opts.callback){
  92. opts.callback(index,$this);
  93. }
  94. });
  95. }
  96. el.goTo = function (index,toOpts){
  97. $hd.eq(index).addClass('curr').siblings().removeClass('curr');
  98. $bd.eq(index).addClass('curr').siblings().removeClass('curr');
  99. };
  100. return this;
  101. };
  102. $(document).on('mouseenter', '[data-toggle="tabs"]', function (e) {
  103. $(this).tabs();
  104. });
  105. })(jQuery);
  106. /* ========================================================================
  107. * formSelect
  108. * ======================================================================== */
  109. +function ($) {
  110. $.fn.formSelect = function (options,downBack,selectBack,initBack){
  111. var defaultsettings= {
  112. jsonData:null,
  113. initialValue:null,
  114. jsonDataId:null,
  115. jsonDataText:null
  116. };
  117. if(this.length == 0) return this;
  118. if(this.length > 1){
  119. this.each(function(){$(this).formSelect(options,downBack,selectBack)});
  120. return this;
  121. }
  122. if(typeof(options)=='string'){
  123. var $this=$(this),_data=downBack;
  124. function setCurr(v){
  125. if($this.find('a[data-value="'+_data+'"]').length<=0){
  126. return false;
  127. }
  128. $this.children(".cus-sel-chosed").find(".cus-sel-chosed-txt").text(v.val).attr("data-value", v.key);
  129. $this.children('.cus-sel-chosed').find('input').val(v.key);
  130. $this.attr('value',v.key);
  131. $this.find('.cus-sel-list').find('a').removeClass('hover');
  132. $this.find('.cus-sel-list').find('a[data-value="'+v.key+'"]').addClass('hover');
  133. }
  134. switch(options)
  135. {
  136. case 'setDatas':
  137. setCurr(_data);
  138. break;
  139. case 'setDataKey':
  140. var setKey={};
  141. setKey.key=_data;
  142. setKey.val= $.trim($this.find('.cus-sel-list').find('a[data-value="'+_data+'"]').text());
  143. setCurr(setKey);
  144. break;
  145. case 'setDataVal':
  146. var setVal={};
  147. setVal.val=_data;
  148. $this.find('.cus-sel-list').find('a').each(function(){
  149. if($.trim($(this).text())==_data){
  150. setVal.key= $(this).data('value');
  151. }
  152. });
  153. setCurr(setVal);
  154. break;
  155. case 'getDatas':
  156. var getData={};
  157. getData.key = $this.children('.cus-sel-chosed').find('input').val();
  158. getData.val = $.trim($this.children(".cus-sel-chosed").find(".cus-sel-chosed-txt").text());
  159. return getData;
  160. break;
  161. case 'getDataKey':
  162. return $this.children('.cus-sel-chosed').find('input').val();
  163. break;
  164. case 'getDataVal':
  165. return $.trim($this.children(".cus-sel-chosed").find(".cus-sel-chosed-txt").text());
  166. break;
  167. case 'resetValue':
  168. $(this).find(".cus-sel-chosed").find(".cus-sel-chosed-txt").text('-请选择-').attr("data-value", '');
  169. $(this).find('.cus-sel-chosed').find('input').val('');
  170. $(this).attr('value','');
  171. $(this).find('.cus-sel-list').find('a.hover').removeClass('hover');
  172. break;
  173. case 'clearValue':
  174. $(this).find(".cus-sel-chosed").find(".cus-sel-chosed-txt").text('-请选择-').attr("data-value", '');
  175. $(this).find('.cus-sel-chosed').find('input').val('');
  176. $(this).attr('value','');
  177. $(this).find('.cus-sel-list').find('ul').html('');
  178. break;
  179. }
  180. return false;
  181. }
  182. var opts=$.extend(defaultsettings, options);
  183. var _this=$(this),tempStr='',el=this;
  184. if(_this.data('bind')){
  185. _this.off('click','.cus-sel-chosed');
  186. _this.children(".cus-sel-list").off("click","a");
  187. }else{
  188. _this.data('bind',true);
  189. }
  190. if(opts.jsonDataId && opts.jsonDataText){
  191. $(opts.jsonData).each(function(i,data){
  192. var idVal = eval('data.'+opts.jsonDataId),
  193. textVal = eval('data.'+opts.jsonDataText);
  194. if(idVal==''){
  195. tempStr+='<li><a href="javascript:;" title="'+textVal+'" data-value="'+idVal+'">'+textVal+'</a></li>';
  196. }else if(idVal<=0){
  197. tempStr+='<li><a href="javascript:;" title="'+textVal+'" data-value="'+idVal+'">'+textVal+'</a></li>';
  198. }
  199. });
  200. $(opts.jsonData).each(function(i,data){
  201. var idVal = eval('data.'+opts.jsonDataId),
  202. textVal = eval('data.'+opts.jsonDataText);
  203. if(idVal!='' && idVal>0) {
  204. tempStr+='<li><a href="javascript:;" title="'+textVal+'" data-value="'+idVal+'">'+textVal+'</a></li>';
  205. }else if (isNaN(idVal*1)){
  206. tempStr+='<li><a href="javascript:;" title="'+textVal+'" data-value="'+idVal+'">'+textVal+'</a></li>';
  207. }
  208. });
  209. _this.children('.cus-sel-list').children('ul').html(tempStr);
  210. }else if(opts.jsonData) {
  211. for(var key in opts.jsonData){
  212. if(key==''){
  213. tempStr+='<li><a href="javascript:;" title="'+opts.jsonData[key]+'" data-value="'+key+'">'+opts.jsonData[key]+'</a></li>';
  214. }else if(key<=0){
  215. tempStr+='<li><a href="javascript:;" title="'+opts.jsonData[key]+'" data-value="'+key+'">'+opts.jsonData[key]+'</a></li>';
  216. }
  217. }
  218. for(var key in opts.jsonData){
  219. if(key!='' && key>0) {
  220. tempStr+='<li><a href="javascript:;" title="'+opts.jsonData[key]+'" data-value="'+key+'">'+opts.jsonData[key]+'</a></li>';
  221. }else if (isNaN(key*1)){
  222. tempStr+='<li><a href="javascript:;" title="'+opts.jsonData[key]+'" data-value="'+key+'">'+opts.jsonData[key]+'</a></li>';
  223. }
  224. }
  225. _this.children('.cus-sel-list').children('ul').html(tempStr);
  226. }
  227. if(opts.initialValue){
  228. if(opts.initialValue.key==undefined){
  229. for(var key in opts.initialValue){
  230. _this.find('.cus-sel-chosed-txt').text(opts.initialValue[key]).attr("data-value", key);
  231. _this.find('.cus-sel-chosed').find('input').val(key);
  232. _this.find('.cus-sel-list').find('a[data-value="'+key+'"]').addClass('hover');
  233. _this.attr('value',opts.initialValue.val);
  234. }
  235. }else{
  236. _this.find('.cus-sel-chosed-txt').text(opts.initialValue.val).attr("data-value", opts.initialValue.key);
  237. _this.find('.cus-sel-chosed').find('input').val(opts.initialValue.key);
  238. _this.find('.cus-sel-list').find('a[data-value="'+opts.initialValue.key+'"]').addClass('hover');
  239. _this.attr('value',opts.initialValue.val);
  240. }
  241. }
  242. _this.on('click','.cus-sel-chosed',function(){
  243. if(_this.is('.disabled') || _this.is('.active')){
  244. return false;
  245. }
  246. $(".cus-sel").removeClass("active").css({zIndex:1});
  247. $(".cus-sel-list").hide();
  248. $(this).parent(".cus-sel").addClass("active").css({zIndex:1000});
  249. var bodyScrollTop=document.documentElement.scrollTop+document.body.scrollTop,
  250. domTop=_this.offset().top,
  251. bodyHeight=$(window).height(),
  252. listHeight=$(this).siblings('.cus-sel-list').outerHeight(true),
  253. chosedHeight=$(this).outerHeight(true);
  254. if(-(domTop+chosedHeight-bodyScrollTop-bodyHeight)<listHeight){
  255. $(this).siblings('.cus-sel-list').slideDown("fast").css({"top":-(listHeight)+'px'});
  256. }else{
  257. $(this).siblings('.cus-sel-list').slideDown("fast").css({"top":chosedHeight+'px'});
  258. }
  259. if(downBack){
  260. downBack(_this);
  261. }
  262. });
  263. _this.children(".cus-sel-list").on("click", "a", function () {
  264. var text=$(this).text(),
  265. value=$(this).attr("data-value");
  266. $(this).closest(".cus-sel").removeClass("active");
  267. $(this).closest(".cus-sel-list").siblings(".cus-sel-chosed").find(".cus-sel-chosed-txt").text(text).attr("data-value", value);
  268. $(this).closest(".cus-sel").find('.cus-sel-chosed').find('input').val(value);
  269. _this.attr('value',value);
  270. _this.find('.cus-sel-list').find('a').removeClass('hover');
  271. $(this).addClass('hover');
  272. $(this).closest(".cus-sel-list").slideUp("fast",function(){
  273. $(this).closest(".cus-sel").css({zIndex:1});
  274. });
  275. if(selectBack){
  276. selectBack(_this,text,value);
  277. }
  278. return false;
  279. });
  280. if(initBack){
  281. setTimeout(function(){initBack();},300);
  282. }
  283. el.optionsData = function(data,funback){
  284. var optionsHtml='';
  285. if(data) {
  286. var dataLength = 0;
  287. for(var key in data){
  288. if(typeof (data[0])=='undefined'){
  289. optionsHtml+='<li><a href="javascript:;" data-value="'+key+'">'+data[key]+'</a></li>';
  290. }else{
  291. var idVal = eval('data[dataLength].'+opts.jsonDataId),
  292. textVal = eval('data[dataLength].'+opts.jsonDataText);
  293. if(idVal==''){
  294. optionsHtml+='<li><a href="javascript:;" title="'+textVal+'" data-value="'+idVal+'">'+textVal+'</a></li>';
  295. }else if(idVal<=0){
  296. optionsHtml+='<li><a href="javascript:;" title="'+textVal+'" data-value="'+idVal+'">'+textVal+'</a></li>';
  297. }else if(idVal!='' && idVal>0) {
  298. optionsHtml+='<li><a href="javascript:;" title="'+textVal+'" data-value="'+idVal+'">'+textVal+'</a></li>';
  299. }else if (isNaN(idVal*1)){
  300. optionsHtml+='<li><a href="javascript:;" title="'+textVal+'" data-value="'+idVal+'">'+textVal+'</a></li>';
  301. }
  302. dataLength++;
  303. }
  304. }
  305. _this.children('.cus-sel-list').children('ul').html(optionsHtml);
  306. _this.find('.cus-sel-chosed-txt').text('-请选择-').attr("data-value", '');
  307. _this.find('.cus-sel-chosed').find('input').val('');
  308. _this.attr('value','');
  309. }
  310. if(funback){
  311. funback(_this);
  312. }
  313. };
  314. return this;
  315. };
  316. $("html,body").click(function (e) {
  317. var target = e.target;
  318. if ($(target).parents(".cus-sel").length == 0) {
  319. $(".cus-sel").removeClass("active").css({zIndex:1});
  320. $(".cus-sel-list").hide();
  321. }
  322. });
  323. $(document).on('mouseenter', '[data-toggle="formSelect"]', function (e) {
  324. if($(this).data('mouseenter')) return false;
  325. $(this).data('mouseenter',true);
  326. $(this).formSelect();
  327. });
  328. }(jQuery);
  329. /* ========================================================================
  330. * comboFormSelect
  331. * ======================================================================== */
  332. +function ($) {
  333. $.fn.comboFormSelect = function (options,downBack){
  334. if(this.length == 0) return this;
  335. if(this.length > 1){
  336. this.each(function(){$(this).comboFormSelect(options,downBack)});
  337. return this;
  338. }
  339. var _this = $(this),
  340. $list = _this.children('.cus-sel-list'),
  341. $input = _this.children('.cus-sel-chosed').children('input[type="text"]'),
  342. $txt = _this.find('.cus-sel-chosed-txt'),
  343. el = this,
  344. tempStr='';
  345. if(typeof(options)=='string') {
  346. var _data = downBack,
  347. _tempVal = _tempName = '';
  348. if(_this.data('combo')=='checkbox' || _this.data('combo')=='radio'){
  349. switch (options)
  350. {
  351. case 'getKey':
  352. return _this.attr('value');
  353. break;
  354. case 'getVal':
  355. return $txt.html();
  356. break;
  357. case 'resetValue':
  358. if(_this.data('combo')=='checkbox'){
  359. $list.find('label.checkbox').removeClass('checked').find(':checkbox').prop({'checked':false});
  360. }else if(_this.data('combo')=='radio'){
  361. $list.find('label.radio').removeClass('checked').find(':radio').prop({'checked':false});
  362. }
  363. _this.attr('value','');
  364. $input.val('');
  365. $txt.html('-请选择-');
  366. return;
  367. break;
  368. case 'clearValue':
  369. $list.html('');
  370. return;
  371. break;
  372. }
  373. }
  374. switch(_this.data('combo'))
  375. {
  376. case 'checkbox':
  377. var $labelCheckbox = $list.find('label.checkbox');
  378. $labelCheckbox.removeClass('checked').find(':checkbox').prop({'checked':false});
  379. switch (options)
  380. {
  381. case 'setKey':
  382. $labelCheckbox.each(function(){
  383. for(var i=0; i<_data.length; i++){
  384. var _val = $(this).children('input').val(),
  385. _name = $(this).children('input').data('name');
  386. if(_data[i] == _val){
  387. _tempVal += _val+',';
  388. _tempName += _name+',';
  389. $(this).addClass('checked').find(':checkbox').prop({'checked':true});
  390. }
  391. }
  392. });
  393. break;
  394. case 'setVal':
  395. $labelCheckbox.each(function(){
  396. for(var i=0; i<_data.length; i++){
  397. var _val = $(this).children('input').val(),
  398. _name = $(this).children('input').data('name');
  399. if(_data[i] == _name){
  400. _tempVal += _val+',';
  401. _tempName += _name+',';
  402. $(this).addClass('checked').find(':checkbox').prop({'checked':true});
  403. }
  404. }
  405. });
  406. break;
  407. }
  408. _tempVal = _tempVal.substring(0,_tempVal.length-1);
  409. _tempName = _tempName.substring(0,_tempName.length-1);
  410. _this.attr('value',_tempVal);
  411. $input.val(_tempVal);
  412. $txt.html(_tempName);
  413. break;
  414. case 'radio':
  415. var $labelRadio = $list.find('label.radio');
  416. $labelRadio.removeClass('checked').find(':radio').prop({'checked':false});
  417. switch (options) {
  418. case 'setKey':
  419. $labelRadio.each(function(){
  420. var _val = $(this).children('input').val(),
  421. _name = $(this).children('input').data('name');
  422. if(_data == _val){
  423. _tempVal = _val;
  424. _tempName = _name;
  425. $(this).addClass('checked').find(':radio').prop({'checked':true});
  426. }
  427. });
  428. break;
  429. case 'setVal':
  430. $labelRadio.each(function(){
  431. var _val = $(this).children('input').val(),
  432. _name = $(this).children('input').data('name');
  433. if(_data == _name){
  434. _tempVal = _val;
  435. _tempName = _name;
  436. $(this).addClass('checked').find(':radio').prop({'checked':true});
  437. }
  438. });
  439. break;
  440. }
  441. _this.attr('value',_tempVal);
  442. $input.val(_tempVal);
  443. $txt.html(_tempName);
  444. break;
  445. }
  446. return false;
  447. }
  448. var defaultsettings= {
  449. jsonData:null,
  450. initialValue:null,
  451. jsonDataId:null,
  452. jsonDataText:null
  453. };
  454. var opts=$.extend(defaultsettings, options);
  455. var isb;
  456. if(_this.data('combo')=='checkbox'){
  457. isb = true;
  458. }else if(_this.data('combo')=='radio'){
  459. isb = false;
  460. }
  461. function createTempStr(textVal,idVal){
  462. var tempStrHtml = '';
  463. if(isb){
  464. tempStrHtml = '<li>'+
  465. '<label class="checkbox" data-toggle="checkbox">'+
  466. '<input type="checkbox" value="'+idVal+'" data-name="'+textVal+'">'+
  467. '<i class="icon-chkbox"></i>'+textVal+
  468. '</label>'+
  469. '</li>';
  470. }else{
  471. tempStrHtml = '<li>'+
  472. '<label class="radio demo-radio-elem">'+
  473. '<input type="radio" value="'+idVal+'" data-name="'+textVal+'">'+
  474. '<i class="icon-radio"></i>'+textVal+
  475. '</label>'+
  476. '</li>';
  477. }
  478. return tempStrHtml;
  479. }
  480. if(opts.jsonDataId && opts.jsonDataText){
  481. $(opts.jsonData).each(function(i,data){
  482. var idVal = eval('data.'+opts.jsonDataId),
  483. textVal = eval('data.'+opts.jsonDataText);
  484. if(idVal==''){
  485. tempStr+=createTempStr(textVal,idVal);
  486. }else if(idVal<=0){
  487. tempStr+=createTempStr(textVal,idVal);
  488. }
  489. });
  490. $(opts.jsonData).each(function(i,data){
  491. var idVal = eval('data.'+opts.jsonDataId),
  492. textVal = eval('data.'+opts.jsonDataText);
  493. if(idVal!='' && idVal>0) {
  494. tempStr+=createTempStr(textVal,idVal);
  495. }else if (isNaN(idVal*1)){
  496. tempStr+=createTempStr(textVal,idVal);
  497. }
  498. });
  499. _this.children('.cus-sel-list').find('ul').html(tempStr);
  500. }
  501. if(opts.initialValue){
  502. var _initVal = _initName = '';
  503. if(isb){
  504. var $labelCheckbox = $list.find('label.checkbox');
  505. $labelCheckbox.removeClass('checked').find(':checkbox').prop({'checked':false});
  506. $labelCheckbox.each(function(){
  507. for(var i=0; i<opts.initialValue.length; i++){
  508. var _val = $(this).children('input').val(),
  509. _name = $(this).children('input').data('name');
  510. if(opts.initialValue[i] == _val){
  511. _initVal += _val+',';
  512. _initName += _name+',';
  513. $(this).addClass('checked').find(':checkbox').prop({'checked':true});
  514. }
  515. }
  516. });
  517. _initVal = _initVal.substring(0,_initVal.length-1);
  518. _initName = _initName.substring(0,_initName.length-1);
  519. _this.attr('value',_initVal);
  520. $input.val(_initVal);
  521. $txt.html(_initName);
  522. }else{
  523. var $labelRadio = $list.find('label.radio');
  524. $labelRadio.removeClass('checked').find(':radio').prop({'checked':false});
  525. $labelRadio.each(function(){
  526. var _val = $(this).children('input').val(),
  527. _name = $(this).children('input').data('name');
  528. if(opts.initialValue == _val){
  529. _initVal = _val;
  530. _initName = _name;
  531. $(this).addClass('checked').find(':radio').prop({'checked':true});
  532. }
  533. });
  534. _this.attr('value',_initVal);
  535. $input.val(_initVal);
  536. $txt.html(_initName);
  537. }
  538. }
  539. _this.on("click",".cus-sel-chosed",function () {
  540. _this.removeClass("active").css({zIndex:1});
  541. $list.hide();
  542. $(this).parent(".cus-sel").addClass("active").css({zIndex:1000});
  543. var bodyScrollTop=document.documentElement.scrollTop+document.body.scrollTop,
  544. domTop=_this.offset().top,
  545. bodyHeight=$(window).height(),
  546. listHeight=$(this).siblings('.cus-sel-list').outerHeight(true),
  547. chosedHeight=$(this).outerHeight(true);
  548. if(-(domTop+chosedHeight-bodyScrollTop-bodyHeight)<listHeight){
  549. $(this).siblings('.cus-sel-list').slideDown("fast").css({"top":-(listHeight)+'px'});
  550. }else{
  551. $(this).siblings('.cus-sel-list').slideDown("fast").css({"top":chosedHeight+'px'});
  552. }
  553. if(downBack){
  554. downBack(_this);
  555. }
  556. });
  557. switch(_this.data('combo'))
  558. {
  559. case 'checkbox':
  560. $list.on('click','label.checkbox',function(){
  561. $checkbox = $list.find('input[type="checkbox"]');
  562. setTimeout(function(){
  563. var _val = _name = '';
  564. $checkbox.each(function(){
  565. if($(this).is(":checked")){
  566. _val += $(this).val()+',';
  567. _name += $(this).data('name')+',';
  568. }
  569. });
  570. _val = _val.substring(0,_val.length-1);
  571. _name = _name.substring(0,_name.length-1);
  572. _this.attr('value',_val);
  573. $input.val(_val);
  574. $txt.html(_name);
  575. },150);
  576. });
  577. break;
  578. case 'radio':
  579. $list.on('click','label.radio',function(){
  580. $radio = $list.find('input[type="radio"]');
  581. setTimeout(function(){
  582. var _val = _name = '';
  583. $radio.each(function(){
  584. if($(this).is(":checked")){
  585. _val += $(this).val();
  586. _name += $(this).data('name');
  587. }
  588. });
  589. _this.attr('value',_val);
  590. $input.val(_val);
  591. $txt.html(_name);
  592. },150);
  593. });
  594. break;
  595. }
  596. return this;
  597. };
  598. $("html,body").click(function (e) {
  599. var target = e.target;
  600. if ($(target).parents(".cus-sel").length == 0) {
  601. $(".cus-sel").removeClass("active"); $(".cus-sel-list").hide();
  602. }
  603. });
  604. $(document).on('mouseenter', '[data-toggle="ztreeFormSelect"],[data-toggle="domFormSelect"],[data-toggle="comboFormSelect"]', function (e) {
  605. if($(this).data('mouseenter')) return false;
  606. $(this).data('mouseenter',true);
  607. $(this).comboFormSelect();
  608. });
  609. }(jQuery);
  610. /* ========================================================================
  611. * tbHover
  612. * ======================================================================== */
  613. +function ($) {
  614. $.fn.tbHover = function (options,hoverBack){
  615. var defaultsettings= {
  616. };
  617. var opts=$.extend(defaultsettings, options);
  618. return this.each(function(){
  619. var _this=$(this),el=this;
  620. _this.on("mouseenter","td",function () {
  621. $(this).parent().addClass("hover");
  622. }).on("mouseleave","td",function () {
  623. $(this).parent().removeClass("hover");
  624. });
  625. return this;
  626. });
  627. };
  628. $(document).on('mouseenter', '[data-toggle="tbHover"]', function (e) {
  629. if($(this).data('mouseenter')) return false;
  630. $(this).data('mouseenter',true);
  631. $(this).tbHover();
  632. });
  633. }(jQuery);
  634. /* ========================================================================
  635. * error-tip-box
  636. * ======================================================================== */
  637. +function ($) {
  638. var errorTipsDom=null;
  639. $(document).on('mouseenter', '[data-toggle="errorTips"]', function (e) {
  640. var $el=$(this);
  641. errorTipsDom=$('<div class="error-tip-box c-hide">'
  642. +'<div class="hd">'
  643. +'<s class="arrow arrow-l"><s></s></s>'
  644. +'</div>'
  645. +'<div class="bd c-ff8100 c-f14">'+$el.data('text')+'</div>'
  646. +'</div>').appendTo('body');
  647. errorTipsDom.css({'left':$el.offset().left+24,'top':$el.offset().top-5}).show(150);
  648. }).on('mouseleave', '[data-toggle="errorTips"]', function (e) {
  649. errorTipsDom.remove();
  650. });
  651. }(jQuery);
  652. /* ========================================================================
  653. * c-btn-disable
  654. * ======================================================================== */
  655. +(function($){
  656. $(document).on("mouseenter",'[data-toggle="disableBtn"]',function (e) {
  657. if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false;
  658. $(this).off('click');
  659. if($(this).attr('onclick')){
  660. $(this).removeAttr('onclick');
  661. }
  662. return false;
  663. });
  664. })(jQuery);
  665. /* ========================================================================
  666. * checkbox , radio
  667. * ======================================================================== */
  668. +(function($){
  669. $(document).on("click",'[data-toggle="checkbox"]',function (e) {
  670. if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false;
  671. if($(this).is('.disabled')||$(this).children('input').is(':disabled')){
  672. return false;
  673. }
  674. $(this).toggleClass('checked');
  675. if($(this).hasClass('checked')) {
  676. $(this).find(':checkbox').prop({'checked':true});
  677. } else {
  678. $(this).find(':checkbox').prop({'checked':false});
  679. }
  680. });
  681. $(document).on("click",'[data-toggle="radio"]',function(e){
  682. if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false;
  683. if($(this).is('.disabled')||$(this).children('input').is(':disabled')){
  684. return false;
  685. }
  686. $(this).parent().find('.radio').removeClass('checked').find(':radio').prop({'checked':false});
  687. $(this).addClass('checked').find(':radio').attr({'checked':"checked"});
  688. });
  689. })(jQuery);
  690. /* ========================================================================
  691. * checkboxGroup
  692. * ======================================================================== */
  693. +(function($){
  694. $.fn.checkboxGroup = function (options){
  695. var defaultsettings= {
  696. operate : null,
  697. opreateDataKey : null,
  698. opreateDataOther : null,
  699. elemClass : '.checkbox',
  700. oneElemClass : '',
  701. allElemClass : '',
  702. callBack : null
  703. };
  704. if(this.length == 0) return this;
  705. if(this.length > 1){
  706. this.each(function(){$(this).checkboxGroup(options)});
  707. return this;
  708. }
  709. var opts = $.extend(defaultsettings, options),
  710. $this = $(this);
  711. if(typeof (opts.operate)=='string'){
  712. switch(opts.operate) {
  713. case 'setKey':
  714. $this.find(opts.elemClass).removeClass('checked').find(':checkbox').prop({'checked':false});
  715. $this.find(':checkbox').each(function(){
  716. if(typeof (opts.opreateDataKey) == 'object'){
  717. var $checkbox = $(this);
  718. $(opts.opreateDataKey).each(function(i,d){
  719. if ($checkbox.val()==d){
  720. $checkbox.parent().addClass('checked').find(':checkbox').attr({'checked':"checked"});
  721. }
  722. });
  723. } else if (typeof (opts.opreateDataKey) == 'number'){
  724. if ($(this).val()==opts.opreateDataKey){
  725. $(this).parent().addClass('checked').find(':checkbox').attr({'checked':"checked"});
  726. }
  727. }
  728. });
  729. return false;
  730. break;
  731. case 'getKey':
  732. var _val = '';
  733. $this.find(':checkbox').each(function(){
  734. if($(this).is(':checked')){
  735. _val+=$(this).val()+',';
  736. }
  737. });
  738. _val=_val.substring(0,_val.length-1);
  739. return _val;
  740. break;
  741. case 'other':
  742. var _val = '';
  743. $this.find(':checkbox').each(function(){
  744. if($(this).is(':checked')){
  745. _val+=$(this).attr(opts.opreateDataOther)+',';
  746. }
  747. });
  748. _val=_val.substring(0,_val.length-1);
  749. return _val;
  750. break;
  751. case 'reset':
  752. $this.find('label.checkbox').removeClass('checked').find(':checkbox').prop({'checked':false});
  753. return false;
  754. break;
  755. }
  756. }else if (opts.operate === true){
  757. //单击全选 checkbox
  758. $this.on('click',opts.allElemClass,function(e){
  759. if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false;
  760. if($(this).is('.disabled')||$(this).children('input').is(':disabled')){
  761. return false;
  762. }
  763. $(this).toggleClass('checked');
  764. if($(this).hasClass('checked')) {
  765. $(this).find(':checkbox').prop({'checked':true});
  766. } else {
  767. $(this).find(':checkbox').prop({'checked':false});
  768. }
  769. if($(this).find(':checkbox').is(':checked')){
  770. $this.find(opts.oneElemClass).each(function(){
  771. $(this).addClass('checked');
  772. $(this).find(':checkbox').prop({'checked':true});
  773. });
  774. }else{
  775. $this.find(opts.oneElemClass).each(function(){
  776. $(this).removeClass('checked');
  777. $(this).find(':checkbox').prop({'checked':false});
  778. });
  779. }
  780. if(opts.callBack){
  781. opts.callBack($(this));
  782. }
  783. });
  784. //单击单个 checkbox
  785. $this.on('click',opts.oneElemClass,function(e){
  786. if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false;
  787. if($(this).is('.disabled')||$(this).children('input').is(':disabled')){
  788. return false;
  789. }
  790. $(this).toggleClass('checked');
  791. if($(this).hasClass('checked')) {
  792. $(this).find(':checkbox').prop({'checked':true});
  793. } else {
  794. $(this).find(':checkbox').prop({'checked':false});
  795. }
  796. var chekboxAll=true,
  797. $all=$this.find(opts.allElemClass);
  798. $this.find(opts.oneElemClass).each(function(){
  799. if(!($(this).find(':checkbox').is(':checked'))){
  800. chekboxAll=false;
  801. }
  802. });
  803. if(chekboxAll){
  804. $all.addClass('checked');
  805. $all.find(':checkbox').prop({'checked':true});
  806. }else{
  807. $all.removeClass('checked');
  808. $all.find(':checkbox').prop({'checked':false});
  809. }
  810. if(opts.callBack){
  811. opts.callBack($(this));
  812. }
  813. });
  814. }
  815. };
  816. })(jQuery);
  817. /* ========================================================================
  818. * radioGroup
  819. * ======================================================================== */
  820. +(function($){
  821. $.fn.radioGroup = function (options){
  822. var defaultsettings= {
  823. operate : null,
  824. opreateDataKey : null,
  825. opreateDataOther : null,
  826. elemClass : '.radio'
  827. };
  828. if(this.length == 0) return this;
  829. if(this.length > 1){
  830. this.each(function(){$(this).radioGroup(options)});
  831. return this;
  832. }
  833. var opts = $.extend(defaultsettings, options),
  834. $this = $(this);
  835. if(typeof (opts.operate)=='string'){
  836. switch(opts.operate) {
  837. case 'setKey':
  838. $this.find(opts.elemClass).removeClass('checked').find(':radio').prop({'checked':false});
  839. $this.find(':radio').each(function(){
  840. if($(this).val()==opts.opreateDataKey){
  841. $(this).parent().addClass('checked').find(':radio').attr({'checked':"checked"});
  842. }
  843. });
  844. return false;
  845. break;
  846. case 'getKey':
  847. var _val = null;
  848. $this.find('.radio').each(function(){
  849. if($(this).is('.checked')){
  850. _val=$(this).find('input:radio').val();
  851. }
  852. });
  853. return _val;
  854. break;
  855. case 'other':
  856. var _val = null;
  857. $this.find('.radio').each(function(){
  858. if($(this).is('.checked')){
  859. _val=$(this).find('input:radio').attr(opts.opreateDataOther);
  860. }
  861. });
  862. return _val;
  863. break;
  864. case 'reset':
  865. $this.find('label.radio').removeClass('checked').find(':radio').prop({'checked':false});
  866. return false;
  867. break;
  868. }
  869. }
  870. $this.on("click",opts.elemClass,function(e){
  871. if (e || e.preventDefault()) e.preventDefault(); else window.event.returnValue = false;
  872. if($(this).is('.disabled')||$(this).children('input').is(':disabled')){
  873. return false;
  874. }
  875. $this.find(opts.elemClass).removeClass('checked').find(':radio').prop({'checked':false});
  876. $(this).addClass('checked').find(':radio').attr({'checked':"checked"});
  877. if(opts.callBack){
  878. opts.callBack($(this));
  879. }
  880. });
  881. };
  882. })(jQuery);
  883. /* ========================================================================
  884. * panels
  885. * ======================================================================== */
  886. +(function($){
  887. $.fn.panels = function (options){
  888. var defaultsettings= {
  889. };
  890. var opts=$.extend(defaultsettings, options);
  891. return this.each(function(){
  892. var _this=$(this),el=this,
  893. $hd=_this.parents('div.c-panel-hd'),
  894. $bd=$hd.next('div.c-panel-bd'),
  895. $panel=_this.parents('div.c-panel');
  896. switch (_this.data('toggle'))
  897. {
  898. case "panelCollapse":
  899. _this.on('click',function(){
  900. if($bd.css('display')=='none'){
  901. $bd.stop(true,false).slideDown("fast",function(){
  902. _this.html('<i class="iconfont">&#xe60f;</i>');
  903. });
  904. }else{
  905. $bd.stop(true,false).slideUp("fast",function(){
  906. _this.html('<i class="iconfont">&#xe60e;</i>');
  907. });
  908. }
  909. });
  910. break;
  911. case "panelremove":
  912. _this.on('click',function(){
  913. $panel.remove();
  914. });
  915. break;
  916. }
  917. return this;
  918. });
  919. };
  920. $(document).on('mouseenter', '[data-toggle="panelCollapse"],[data-toggle="panelremove"]', function (e) {
  921. if($(this).data('mouseenter')) return false;
  922. $(this).data('mouseenter',true);
  923. $(this).panels();
  924. });
  925. })(jQuery);
  926. /* ========================================================================
  927. * page-layout-menu
  928. * ======================================================================== */
  929. +(function($){
  930. $(document).ready(function(){
  931. if($('div[data-toggle="pageLayoutMenu"]').length>0){
  932. $(".page-layout-menu").height($(window).height()).niceScroll({cursorborder:"",cursorcolor:"#cccdd1"});
  933. }
  934. });
  935. })(jQuery);
  936. /* ========================================================================
  937. * formReadonly 表单禁用、只读
  938. * ======================================================================== */
  939. +(function($){
  940. $.fn.formReadonly = function (options,callback){
  941. var defaultsettings= {
  942. readonlys : null
  943. };
  944. var opts=$.extend(defaultsettings, options);
  945. return this.each(function(){
  946. var _this = $(this),
  947. el = this;
  948. if(opts.readonlys == true){
  949. _this.find('input.input-text').each(function(){
  950. $(this).addClass('input-text-disabled').prop('disabled','disabled');
  951. });
  952. _this.find('textarea.textarea').each(function(){
  953. $(this).addClass('textarea-disabled').prop('disabled','disabled');
  954. });
  955. _this.find('input.search').each(function(){
  956. $(this).parent().addClass('input-search-disabled');
  957. $(this).prop('disabled','disabled');
  958. });
  959. _this.find('.form-select').each(function(){
  960. $(this).addClass('form-select-disabled').find('select').prop('disabled','disabled');
  961. });
  962. _this.find('.cus-sel').each(function(){
  963. $(this).addClass('disabled');
  964. });
  965. _this.find('input.radio,input.checkbox').each(function(){
  966. $(this).prop('disabled','disabled');
  967. });
  968. _this.find('input.datetimepicker').each(function(){
  969. $(this).addClass('disabled');
  970. $(this).datetimepicker('destroy');
  971. });
  972. _this.find('label.radio,label.checkbox').each(function(){
  973. $(this).addClass('disabled').find('input').prop('disabled','disabled');
  974. });
  975. }else if (opts.readonlys == false){
  976. _this.find('input.input-text').each(function(){
  977. $(this).removeClass('input-text-disabled').prop('disabled','');
  978. });
  979. _this.find('textarea.textarea').each(function(){
  980. $(this).removeClass('textarea-disabled').prop('disabled','');
  981. });
  982. _this.find('input.search').each(function(){
  983. $(this).parent().removeClass('input-search-disabled');
  984. $(this).prop('disabled','');
  985. });
  986. _this.find('.form-select').each(function(){
  987. $(this).removeClass('form-select-disabled').find('select').prop('disabled','');
  988. });
  989. _this.find('.cus-sel').each(function(){
  990. $(this).removeClass('disabled');
  991. });
  992. _this.find('input.radio,input.checkbox').each(function(){
  993. $(this).prop('disabled','');
  994. });
  995. _this.find('label.radio,label.checkbox').each(function(){
  996. $(this).removeClass('disabled').find('input').prop('disabled','');
  997. });
  998. _this.find('input.datetimepicker').each(function(){
  999. $(this).removeClass('disabled');
  1000. });
  1001. }
  1002. if(callback){
  1003. callback();
  1004. }
  1005. return this;
  1006. });
  1007. };
  1008. $(function(){
  1009. $('[data-toggle="formReadonly"]').formReadonly({readonlys:true});
  1010. });
  1011. })(jQuery);
  1012. /* ========================================================================
  1013. * BtnDropdown
  1014. * ======================================================================== */
  1015. !(function($,window,document,undefined){
  1016. var BtnDropdown = function(options,ele){
  1017. var defaults = {
  1018. data: null,
  1019. togglemethod:''
  1020. },
  1021. _this = this,
  1022. ul,
  1023. tempLis;
  1024. _this.DOM = ele;
  1025. _this.opts = $.extend({}, defaults, options);
  1026. function isPercentage(num) {
  1027. var patt = new RegExp(/^\d+%$/);
  1028. return patt.test(num);
  1029. }
  1030. function bindTogglemethod(toggleMethod) {
  1031. switch(toggleMethod) {
  1032. case 'click':
  1033. $(_this.DOM).on('click',function(){
  1034. $(this).toggleClass('dropdown-open');
  1035. if($(this).hasClass('dropdown-open')) {
  1036. var dropdownMenu = $(this).children('.dropdown-menu').eq(0),
  1037. dropdownMenuTop = isPercentage(dropdownMenu.css('top'))?parseFloat(dropdownMenu.css('top'))/100 * $(this).outerHeight():parseInt(dropdownMenu.css('top'));
  1038. if(dropdownMenuTop>=0) {
  1039. if($(window).scrollTop()+$(window).height()<$(this).offset().top + dropdownMenuTop + dropdownMenu.outerHeight(true)){
  1040. dropdownMenu.css({'top':-dropdownMenu.outerHeight()});
  1041. }
  1042. } else {
  1043. if($(window).scrollTop()>$(this).offset().top + dropdownMenuTop){
  1044. dropdownMenu.css({'top':dropdownMenu.css('top','')});
  1045. }
  1046. }
  1047. $(this).children('.dropdown-menu').show();
  1048. } else {
  1049. $(this).children('.dropdown-menu').hide();
  1050. }
  1051. });
  1052. break;
  1053. case 'hover':
  1054. $(_this.DOM).on('mouseenter',function(){
  1055. $(this).addClass('dropdown-open');
  1056. var dropdownMenu = $(this).children('.dropdown-menu').eq(0),
  1057. dropdownMenuTop = isPercentage(dropdownMenu.css('top'))?parseFloat(dropdownMenu.css('top'))/100 * $(this).outerHeight():parseInt(dropdownMenu.css('top'));
  1058. if(dropdownMenuTop>=0) {
  1059. if($(window).scrollTop()+$(window).height()<$(this).offset().top + dropdownMenuTop + dropdownMenu.outerHeight(true)){
  1060. dropdownMenu.css({'top':-dropdownMenu.outerHeight()});
  1061. }
  1062. } else {
  1063. if($(window).scrollTop()>$(this).offset().top + dropdownMenuTop){
  1064. dropdownMenu.css({'top':dropdownMenu.css('top','')});
  1065. }
  1066. }
  1067. $(this).children('.dropdown-menu').show();
  1068. }).on('mouseleave',function(){
  1069. $(this).removeClass('dropdown-open').children('.dropdown-menu').hide();
  1070. });
  1071. break;
  1072. //default: break;
  1073. }
  1074. }
  1075. if(_this.opts.togglemethod) {
  1076. bindTogglemethod(_this.opts.togglemethod);
  1077. } else if(_this.DOM.getAttribute('data-togglemethod')!='') {
  1078. bindTogglemethod(_this.DOM.getAttribute('data-togglemethod'));
  1079. } else {
  1080. bindTogglemethod('click');
  1081. }
  1082. function isArrayFn(value){
  1083. //console.log(Object.prototype.toString.call(value));
  1084. if(typeof Array.isArray === "function") {
  1085. return Array.isArray(value);
  1086. } else {
  1087. return Object.prototype.toString.call(value) === "[object Array]";
  1088. }
  1089. }
  1090. function render(data) {
  1091. var i, dataLength = data.length, tempStr = '';
  1092. if(isArrayFn(data)) {
  1093. for(i=0; i<dataLength; i++) {
  1094. if(i == 0) {
  1095. tempStr += '<li class="divider"></li>';
  1096. }
  1097. if(isArrayFn(data[i])) {
  1098. tempStr += render(data[i]);
  1099. } else {
  1100. switch(data[i].type) {
  1101. case 'anchor':
  1102. case 'link':
  1103. tempStr+='<li><a href="' + data[i].src + '">' + data[i].text + '</a></li>';
  1104. break;
  1105. case 'function':
  1106. tempStr+='<li><a href="javascript:;" onclick="(' + data[i].func + ')();">' + data[i].text + '</a></li>';
  1107. break;
  1108. }
  1109. }
  1110. }
  1111. }
  1112. return tempStr;
  1113. }
  1114. ul = $(_this.DOM).children('.dropdown-menu').children('ul').eq(0);
  1115. if(_this.opts.data!=null) {
  1116. tempLis = render(_this.opts.data);
  1117. ul.append(tempLis);
  1118. }
  1119. $.extend(
  1120. _this,
  1121. {
  1122. show:function() {
  1123. $(this.DOM).addClass('dropdown-open').children('.dropdown-menu').show();
  1124. },
  1125. hide:function() {
  1126. $(this.DOM).removeClass('dropdown-open').children('.dropdown-menu').hide();
  1127. },
  1128. one:function() {
  1129. if(this.opts.togglemethod === 'hover' || (this.opts.togglemethod === '' && this.DOM.getAttribute('data-togglemethod')==='hover')) {
  1130. $(this.DOM).trigger('mouseenter');
  1131. }
  1132. },
  1133. disable:function(arrDisableItems) {
  1134. var i, arrLen;
  1135. if(arrDisableItems != undefined) {
  1136. for(i=0, arrLen=arrDisableItems.length; i<arrLen; i++) {
  1137. $(this.DOM).children('.dropdown-menu').find('li').filter(function(){
  1138. return $(this).text() === $.trim(arrDisableItems[i]);
  1139. }).addClass('disabled');
  1140. }
  1141. } else {
  1142. $(this.DOM).children('.dropdown-menu').find('li:not(".divider")').addClass('disabled');
  1143. }
  1144. $(this.DOM).children('.dropdown-menu').find('.disabled>a').each(function(){
  1145. var tempObjWithFn = $(this).clone(true,true),
  1146. tempObj = $(this).clone();
  1147. tempObj.insertAfter($(this)).data('btnDropdownEle',tempObjWithFn);
  1148. tempObj.get(0).setAttribute('onclick', null);
  1149. $(this).remove();
  1150. }).end().on('click','.disabled>a',function(){
  1151. return false;
  1152. });
  1153. },
  1154. enable:function(arrEnableItems){
  1155. var i, arrLen, tempEle;
  1156. if(arrEnableItems != undefined) {
  1157. for(i=0, arrLen=arrEnableItems.length; i<arrLen; i++) {
  1158. tempEle = $(this.DOM).children('.dropdown-menu').find('li').filter(function(){
  1159. return $(this).text() === $.trim(arrEnableItems[i]);
  1160. });
  1161. if(tempEle.is('.disabled')) {
  1162. var tempEleData = tempEle.children('a').data('btnDropdownEle');
  1163. tempEle.removeClass('disabled').empty().append(tempEleData);
  1164. }
  1165. }
  1166. } else {
  1167. $(this.DOM).children('.dropdown-menu').find('li.disabled').removeClass('disabled').each(function(){
  1168. var tempEleData = $(this).children('a').data('btnDropdownEle');
  1169. $(this).removeClass('disabled').empty().append(tempEleData);
  1170. });
  1171. }
  1172. },
  1173. add:function(data){
  1174. if(data!=null) {
  1175. tempLis = render(data);
  1176. ul.append(tempLis);
  1177. } else {
  1178. alert('添加按钮数据不能为空');
  1179. return false;
  1180. }
  1181. }
  1182. }
  1183. );
  1184. };
  1185. $.fn.btnDropdown = function(options){
  1186. return this.each(function(){
  1187. var _this = this, api = $(_this).data('btnDropdown');
  1188. if(api) {
  1189. //return;
  1190. } else {
  1191. var ele = new BtnDropdown(options,_this);
  1192. $(_this).data('btnDropdown',ele);
  1193. }
  1194. })
  1195. };
  1196. $(document).on('mouseenter', '[data-toggle="btnDropdown"]', function (e) {
  1197. $(this).btnDropdown().one();
  1198. });
  1199. })(jQuery,window,document);
  1200. /* ========================================================================
  1201. * alert
  1202. * ======================================================================== */
  1203. +function ($) {
  1204. 'use strict';
  1205. $.fn.alert = function (options,callback){
  1206. var defaultsettings= {
  1207. };
  1208. var opts=$.extend(defaultsettings, options);
  1209. return this.each(function(){
  1210. var _this = $(this),
  1211. el = this;
  1212. _this.on('click',function(){
  1213. _this.parent().remove();
  1214. });
  1215. if(callback){
  1216. callback();
  1217. }
  1218. return this;
  1219. });
  1220. };
  1221. $(document).on('mouseenter', '[data-toggle="alert"]', function (e) {
  1222. if($(this).data('mouseenter')) return false;
  1223. $(this).data('mouseenter',true);
  1224. $(this).alert();
  1225. });
  1226. }(jQuery);
  1227. //函数节流
  1228. function throttle(fn, delay){
  1229. var timer = null;
  1230. return function(){
  1231. var context = this, args = arguments;
  1232. clearTimeout(timer);
  1233. timer = setTimeout(function(){
  1234. fn.apply(context, args);
  1235. }, delay);
  1236. };
  1237. };