实现JQuery EasyUI右键菜单变灰不可用效果

实现JQuery EasyUI右键菜单变灰不可用效果

使用过EasyUI的朋友想必都知道疯狂秀才写的后台界面吧,作为一个初学者我不敢妄自评论它的好坏,不过它确实给我们提供了一个很好框架,只要在它的基础上进行修改,基本上都可以满足我们开发的需要。

知道“疯狂秀才”写的后台界面已经有一段时间了,直到昨天才好好的研究了一下。在测试的过程中,我发现了一个自认为不友好的地方,举个例子:只剩下一个Tab选项卡时,点击“除此之外全部关闭”,接着会弹出两个提示框,提示“后边没有了~~”和“到头了前边没有了~~”。我平时经常使用VS作为开发工具,使用VS的朋友也会注意到,当只有一个页面打开时,右击“Close All But This”是变灰不可用的,我感觉这样更加的人性化。于是,我就试着实现这一功能。“疯狂秀才”给加了注释,所以在研究代码的时候很方便,在这里真的感谢“疯狂秀才”所做的工作。在“outlook2.js”这个文件中有一个函数“tabClose()”,里面清清楚楚的加了这样一条注释 /*为选项卡绑定右键*/。我看到这里就高兴了,要实现我的功能就是在这里面了。

首先,实现“除此之外全部关闭”变灰不可用。

当只打开一个Tab选项卡时,右键菜单里“除此之外全部关闭”就应该变灰不可用,这样可以提示用户没有除这一个选项卡没有其他的选项卡了。程序实现很简单了,只要获得打开Tab选项卡的个数,如果个数为1,那么就把“除此之外全部关闭”变灰不可用就行了。

    var tabcount = $('#tabs').tabs('tabs').length; //tab选项卡的个数
        if (tabcount <= 1) {
            $('#mm-tabcloseother').attr("disabled", "disabled").css({ "cursor": "default", "opacity": "0.4" });
        }
        else {
            $('#mm-tabcloseother').removeAttr("disabled").css({ "cursor": "pointer", "opacity": "1" });
        }

说明:在Firfox,Google,Opera浏览器里,“disabled”的属性不起作用,所以我加了一个CSS样式,设置了一下它的透明度使它变灰。

第二,实现“当前页右侧全部关闭”变灰不可用。

当一个Tab选项卡的右侧没有选项卡的时候,这个Tab选项卡就应该变灰不可用。程序实现也不难,只要获得最后一个Tab选项卡的标题和当前右键菜单所在的Tab选项卡的标题进行比较,如果一致,就把“当前页右侧全部关闭”变灰不可用。

  var tabs = $('#tabs').tabs('tabs');     //获得所有的Tab选项卡
  var tabcount = tabs.length;  //Tab选项卡的个数
  var lasttab = tabs[tabcount - 1];  //获得最后一个Tab选项卡
  var lasttitle = lasttab.panel('options').tab.text(); //最后一个Tab选项卡的Title
  var currtab_title = $('#mm').data("currtab");  //当前Tab选项卡的Title

        if (lasttitle == currtab_title) {
            $('#mm-tabcloseright').attr("disabled", "disabled").css({ "cursor": "default", "opacity": "0.4" });
        }
        else {
            $('#mm-tabcloseright').removeAttr("disabled").css({ "cursor": "pointer", "opacity": "1" });
        }

第三,实现“当前页左侧全部关闭”变灰不可用。

这个跟第二个相反就行了,获得第一个Tab选项卡的标题和当前Tab选项卡的标题进行比较。

  var onetab = tabs[0];  //第一个Tab选项卡
  var onetitle = onetab.panel('options').tab.text();  //第一个Tab选项卡的Title
       if (onetitle == currtab_title) {
            $('#mm-tabcloseleft').attr("disabled", "disabled").css({ "cursor": "default", "opacity": "0.4" });
        }
        else {
            $('#mm-tabcloseleft').removeAttr("disabled").css({ "cursor": "pointer", "opacity": "1" });
        }
 

最后,实现的效果如下图

除此之外右侧

                   图一:除此之外全部关闭                                                                  图二:当前页右侧全部关闭

左侧

                图三:当前页左侧全部关闭

上面实现了三种情况下的变灰不可用的效果,当鼠标放到上面点击,右键菜单就会消失,其实解决的办法也很简单,只要在对应的单击事件里重新绑定右键菜单即可,这里就不给出代码了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110587.html原文链接:https://javaforall.net

(0)
上一篇 2021年8月12日 下午4:00
下一篇 2021年8月12日 下午5:00


相关推荐

  • 常指针和指针常量区分

    常指针和指针常量区分前言 对于初学者而言 常指针和指针常量是特别容易混淆的两个概念 所以我准备了自从我学习 C 以来对两个概念做的最通俗易懂的阐述 希望能对你有所帮助 不当之处希望大家能批评留言指正 No 1 常指针 什么是常指针 首先说明 常指针是指向常量的指针 这是习惯说法 但是并不准确 常指针的准确定义 不可以通过

    2026年3月26日
    2
  • Java 八大基本数据类型

    Java 八大基本数据类型1.bit就是位,也叫比特位,是计算机表示数据最小的单位2.byte就是字节3.1byte=8bit,00011100,一般用两个16进制来显示,所以我们经常看到1个字节显示为1c4.1byte就是1Bbyte[]bs={(byte)0xff,0x0F,0x1F,0x2F,0x3F,0x4F,0x5F,0x6F};for(inti=0;i&lt;bs.le…

    2022年7月8日
    22
  • TDD与FDD

    TDD与FDDFDD和TDD主要区别就在于采用不同的双工方式,为频分双工(FDD)和时分双工(TDD)是两种不同的双工方式。FDD是在分离的两个对称频率信道上进行接收和发送,用保护频段来分离接收和发送信道。FDD的缺点就是必须采用成对的频率,依靠频率来区分上下行链路,其单方向的资源在时间上是连续的。FDD虽然在支持对称业务时,能充分利用上下行的频谱,但在支持非对称业务时,频谱利用率将大大降低。  …

    2022年6月13日
    40
  • 百度文心多模态思考模型ERNIE-4.5-VL-28B-A3B-Thinking正式开源

    百度文心多模态思考模型ERNIE-4.5-VL-28B-A3B-Thinking正式开源

    2026年3月12日
    2
  • 开心网外挂之争车位之发起比赛

    开心网外挂之争车位之发起比赛       publicvoidlalisai_KaiShiBiSai(stringid)       {           AccessHelperAH=newAccessHelper();           KaiXinHelperKH=newKaiXinHelper();           DataTabledt=AH.GetDataTable(“

    2025年9月16日
    9
  • 什么是分布式,分布式和集群的区别又是什么?这一篇让你彻底明白!

    什么是分布式,分布式和集群的区别又是什么?这一篇让你彻底明白!1 什么是分布式 分布式系统一定是由多个节点组成的系统 其中 节点指的是计算机服务器 而且这些节点一般不是孤立的 而是互通的 这些连通的节点上部署了我们的节点 并且相互的操作会有协同 分布式系统对于用户而言 他们面对的就是一个服务器 提供用户需要的服务而已 而实际上这些服务是通过背后的众多服务器组成的一个分布式系统 因此分布式系统看起来像是一个超级计算机一样 2 分布式与集群的区别 集群是同一个系统部在不同的服务器上 例如 一个登陆系统部在不同的服务器上 分

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号