easyui-linkbutton 禁用启用之后 href失效的问题

如题,最近做一个项目需要大量使用linkbutton,而且需要实现按钮之间的互动,多个关联按钮之间状态要互相控制切换,然后就用到了linkbutton('disable')和linkbutton('enable'),当然问题也就随之而来了,在重复执行$('.easyui-linkbutton').linkbutton('disable')之后,即使通过enable把某个按钮设置为可用状态了,但是click之后确没有任何反应,看浏览器状态栏,明显的是按钮还在沉睡中的样子,什么情况呢??语法逻辑反反复复看过,绝对没问题,是什么问题呢,我在网上查了好一阵,网上给出说是easyui有BUG,我真不敢相信啊,真的吗,怀着对easyui的无比信任,我起初还真不信,但是我就是找不到原因何在,问题始终需要解决,于是我抱着试试的态度,按照网上的方法做了一个关于linkbutton的扩展脚本,一试,嘿,还真别说,问题解决了!!!

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 /**    * linkbutton方法扩展    * @param {Object} jq    */   $.extend($.fn.linkbutton.methods, {       /**        * 激活选项(覆盖重写)        * @param {Object} jq        */       enable:  function (jq){           return  jq.each( function (){               var  state = $.data( this 'linkbutton' );               if  ($( this ).hasClass( 'l-btn-disabled' )) {                   var  itemData = state._eventsStore;                   //恢复超链接                   if  (itemData.href) {                       $( this ).attr( "href" , itemData.href);                   }                   //回复点击事件                   if  (itemData.onclicks) {                       for  ( var  j = 0; j < itemData.onclicks.length; j++) {                           $( this ).bind( 'click' , itemData.onclicks[j]);                       }                   }                   //设置target为null,清空存储的事件处理程序                   itemData.target =  null ;                   itemData.onclicks = [];                   $( this ).removeClass( 'l-btn-disabled' );               }           });       },       /**        * 禁用选项(覆盖重写)        * @param {Object} jq        */       disable:  function (jq){           return  jq.each( function (){               var  state = $.data( this 'linkbutton' );               if  (!state._eventsStore)                   state._eventsStore = {};               if  (!$( this ).hasClass( 'l-btn-disabled' )) {                   var  eventsStore = {};                   eventsStore.target =  this ;                   eventsStore.onclicks = [];                   //处理超链接                   var  strHref = $( this ).attr( "href" );                   if  (strHref) {                       eventsStore.href = strHref;                       $( this ).attr( "href" "javascript:void(0)" );                   }                   //处理直接耦合绑定到onclick属性上的事件                   var  onclickStr = $( this ).attr( "onclick" );                   if  (onclickStr && onclickStr !=  "" ) {                       eventsStore.onclicks[eventsStore.onclicks.length] =  new  Function(onclickStr);                       $( this ).attr( "onclick" "" );                   }                   //处理使用jquery绑定的事件                   var  eventDatas = $( this ).data( "events" ) || $._data( this 'events' );                   if  (eventDatas[ "click" ]) {                       var  eventData = eventDatas[ "click" ];                       for  ( var  i = 0; i < eventData.length; i++) {                           if  (eventData[i].namespace !=  "menu" ) {                               eventsStore.onclicks[eventsStore.onclicks.length] = eventData[i][ "handler" ];                               $( this ).unbind( 'click' , eventData[i][ "handler" ]);                               i--;                           }                       }                   }                   state._eventsStore = eventsStore;                   $( this ).addClass( 'l-btn-disabled' );               }           });       }   });

就是这段,加入到你使用linkbutton所在的页面,linkbutton禁用后复用的问题就解决了。

本文转自问道博客51CTO博客,原文链接http://blog.51cto.com/450236/1840590如需转载请自行联系原作者


crackernet


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部