easyui-menu 解决disableItem不能禁用绑定事件的方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了easyui-menu 解决disableItem不能禁用绑定事件的方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2604字,纯文字阅读大概需要4分钟。
内容图文

版本:1.4.
menu的disableItem方法不能禁用使用onClick方式绑定的事件。
解决思路如下:
重写disableItem方法和enableItem方法。
/** * menu方法扩展 * @param {Object} jq * @param {Object} itemEl */ $.extend($.fn.menu.methods, { /** * 激活选项(覆盖重写) * @param {Object} jq * @param {Object} itemEl */ enableItem : function(jq, itemEl) { return jq.each(function(){ var jqElements = $(itemEl); var state = $.data(this, ‘menu‘); if (jqElements.length > 0) { jqElements.each(function(){ if ($(this).hasClass(‘menu-item-disabled‘)) { for(var i=0; i<state._eventsStore.length; i++){ var itemData = state._eventsStore[i]; if(itemData.target == this){ //恢复超链接 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(‘menu-item-disabled‘); } } } }); } }); }, /** * 禁用选项(覆盖重写) * @param {Object} jq * @param {Object} itemEl */ disableItem : function(jq, itemEl) { return jq.each(function() { var jqElements = $(itemEl); var state = $.data(this,‘menu‘); if (jqElements.length > 0) { if (!state._eventsStore) state._eventsStore = []; jqElements.each(function(){ if (!$(this).hasClass(‘menu-item-disabled‘)) { var backStore = {}; backStore.target = this; backStore.onclicks = []; //处理超链接 var strHref = $(this).attr("href"); if (strHref) { backStore.href = strHref; $(this).attr("href", "javascript:void(0)"); } //处理直接耦合绑定到onclick属性上的事件 var onclickStr = $(this).attr("onclick"); if (onclickStr && onclickStr != "") { backStore.onclicks[backStore.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") { backStore.onclicks[backStore.onclicks.length] = eventData[i]["handler"]; $(this).unbind(‘click‘, eventData[i]["handler"]); i--; } } } //遍历_eventsStore数组,如果有target为null的元素,则利用起来 var isStored = false; for(var j=0; j<state._eventsStore.length; j++){ var itemData = state._eventsStore[j]; if(itemData.target==null){ isStored = true; state._eventsStore[j] = backStore; } } //没有现成的,则push进去 if(isStored==false){ state._eventsStore[state._eventsStore.length] = backStore; } $(this).addClass(‘menu-item-disabled‘); } }); } }); } });
转自:http://www.easyui.info/archives/373.html
原文:http://www.cnblogs.com/shikelong/p/4173090.html
内容总结
以上是互联网集市为您收集整理的easyui-menu 解决disableItem不能禁用绑定事件的方法全部内容,希望文章能够帮你解决easyui-menu 解决disableItem不能禁用绑定事件的方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。