`

ContextMenu——右键菜单轻松拥有

阅读更多
(转)ContextMenu——右键菜单轻松拥有



ContextMenu
译自:http://www.trendskitchens.co.nz/jquery/contextmenu/

简介
ContextMenu是一个轻量级jQuery插件,用于选择性地用自己创建的菜单代替浏览器的默认右键菜单。

特点
1.可以在一个页面中使用多个右键菜单;
2.一个右键菜单可以被绑定到多个元素上;
3.可以完全定制菜单的样式;
4.可以设置回调函数。
目前版本
版本号 r2
发布时间 16 July 2007
作者 Chris Domigan (cdomigan at gmail dot com)
下载 源js文件(4.3 KB)
压缩后的js文件(2.5 KB)
需要 jQuery v1.1 or greater
浏览器支持 Firefox 1.5+、Internet Explorer 6.0+

使用
$(elements).contextMenu(String menu_id [, Object settings]);你需要用HTML标记定义菜单结构。对每一个菜单,在一个div中放置一个无序列表(ul标记),设置这个div的class属性为”contextMenu”,并为其添加id属性。这个div可以被放置在任何地方,它将被插件自动隐藏掉。

你可以在页面中定义任意多的菜单。每一个li标记被作为菜单中的一个菜单项。给li标记添加一个唯一的id,这样便可以为其绑定动作。

注意:ContextMenu目前尚不支持嵌套菜单,这一特性也许会在下一个版本中添加。

参数
menu_id在div标记中定义的id属性值。你可以为一个或者多个标记绑定菜单。例如:$(“table td”).contextMenu(“myMenu”)将会给所有的td标记添加id是myMenu的菜单。

注意:相对于r1版本,r2版本中要求在id前添加一个”#”。

settings可选参数,用于改变菜单的样式和为菜单项绑定函数。ConTextMenu在settings对象中支持如下属性:

bindings一个对象,包含多个”id”:function对,用于给每一个菜单项关联单击的处理函数。触发当前菜单的标记会作为参数传给这个处理函数。

menuStyle一个对象,包含多个styleName:value对,用于给包含的ul标记设置css样式。

itemStyle一个对象,包含多个styleName:value对,用于给包含的li标记设置css样式。

itemHoverStyle一个对象,包含多个styleName:value对,用于给鼠标滑过处的li标记设置css样式。

shadow布尔类型,设置在菜单下是否显示阴影。默认是true。

eventPosX允许自定义哪一个单击事件用来决定显示菜单的横向位置。有时(尤其对于IE6)你需要将其设置成”clientX”。默认是”pageX”。

eventPosY允许自定义哪一个单击事件用来决定显示菜单的纵向位置。有时(尤其对于IE6)你需要将其设置成”clientY”。默认是”pageX”。

onContextMenu(event)在菜单显示前的回调函数。如果该函数返回false,菜单便不会显示。这允许你将上下文菜单(即右键菜单)放置于一个大的块级元素(甚至是整个文档)中,然后在右键单击时通过过滤以决定上下文菜单是否显示。

onShowMenu(event, menu)在菜单显示前的回调函数。它传入菜单元素的引用,允许在菜单显示前控制输出。它使我们可以在显示菜单前隐藏/显示菜单项或者其他操作。这个函数必须返回menu。

改变默认属性值
除了可以通过settings对象给每一个菜单传递样式信息,我们还可以通过调用$.contextMenu.defaults(settings)扩展所有菜单的default选项。除了bindings属性,其他的每一个都将其作为默认值。

比如:

$.contextMenu.defaults({

    menuStyle : {

      border : "2px solid green"

    },

    shadow: false,

    onContextMenu: function(e) {

      alert('有谁需要一个右键菜单?!');

    }

  });



举例
例1:bindings的基本使用
右键点击我 我也可以哦

• Open• Email• Save• Close
Html
    <div class="contextMenu" id="myMenu1">

      <ul>

        <li id="open"><img src="folder.png" /> Open</li>

        <li id="email"><img src="email.png" /> Email</li>

        <li id="save"><img src="disk.png" /> Save</li>

        <li id="close"><img src="cross.png" /> Close</li>

      </ul>

    </div>
Javascript
    $('span.demo1').contextMenu('myMenu1', {

      bindings: {

        'open': function(t) {

          alert('Trigger was '+t.id+'\nAction was Open');

        },

        'email': function(t) {

          alert('Trigger was '+t.id+'\nAction was Email');

        },

        'save': function(t) {

          alert('Trigger was '+t.id+'\nAction was Save');

        },

        'delete': function(t) {

          alert('Trigger was '+t.id+'\nAction was Delete');

        }

      }

    });
以上的代码为所有有demo1的class属性值的span标记绑定myMenu1右键菜单。

例2:基本的样式设置
在这个段落中的任意位置右击都可以触发上下文菜单

•Item 1•Item 2•Item 3•Item 4
Html
  <div class="contextMenu" id="myMenu2">

    <ul>

      <li id="item_1">Item 1</li>

      <li id="item_2">Item 2</li>

      <li id="item_3">Item 3</li>

      <li id="item_4">Item 4</li>

      <!-- etc... -->

    </ul>

  </div>
Javascript
    $('#demo2').contextMenu('myMenu2', {

      menuStyle: {

        border: '2px solid #000'

      },

      itemStyle: {

        fontFamily : 'verdana',

        backgroundColor : '#666',

        color: 'white',

        border: 'none',

        padding: '1px'

      },

      itemHoverStyle: {

        color: '#fff',

        backgroundColor: '#0f0',

        border: 'none'

      }

    });
以上的代码为所有id属性值为demo2的标记绑定myMenu2右键菜单。

例3:回调函数的高级应用
不显示菜单 就显示每一个菜单项 全部显示

•Item 1•Item 2•Item 3
Html
  <div class="contextMenu" id="myMenu3">

    <ul>

      <li id="item_1">Item 1</li>

      <li id="item_2">Item 2</li>

      <li id="item_3">Item 3</li>

    </ul>

  </div>
Javascript
    $('span.demo3').contextMenu('myMenu3', {

      onContextMenu: function(e) {

        if ($(e.target).attr('id') == 'dontShow') return false;

        else return true;

      },

      onShowMenu: function(e, menu) {

        if ($(e.target).attr('id') == 'showOne') {

          $('#item_2, #item_3', menu).remove();

        }

        return menu;

      }

    });
分享到:
评论

相关推荐

    易语言源码易语言右键菜单取文件路径源码.rar

    标题和描述中提到的"易语言源码易语言右键菜单取文件路径源码.rar"是一个压缩包,其中包含了一段使用易语言编写的程序代码,用于实现从Windows操作系统右键菜单中获取选中文件的路径。 在Windows操作系统中,右键...

    flex自定义右键菜单

    首先,我们来看第一种方法——扩展系统右键菜单。在Flex中,我们可以利用内置的ContextMenu类来实现这一功能。系统右键菜单可以通过给DisplayObject或其子类添加contextMenu属性来启用。例如,如果你有一个名为...

    右键菜单-jquery

    在本项目中,我们关注的是一个特定的功能——"右键菜单",这通常指的是用户在鼠标右键点击时弹出的上下文菜单。这个功能在网页应用中非常常见,例如用于提供快捷操作或者自定义功能。 标题“右键菜单-jquery”表明...

    前端项目-leaflet-contextmenu.zip

    今天我们要深入探讨的是一个与Leaflet相关的前端项目——Leaflet-contextmenu,这是一个为Leaflet地图提供上下文菜单(右键菜单)功能的插件。 Leaflet-contextmenu插件的出现,使得用户在地图交互时可以更直观地...

    精彩编程与编程技巧-屏蔽文本框默认的右键菜单——浅谈如何控制Windows消息...

    ### 屏蔽文本框默认的右键菜单——浅谈如何控制Windows消息 #### 知识点一:理解Windows消息机制 在Windows操作系统中,应用程序之间的通信主要通过消息传递来进行。这些消息可以是用户输入(例如键盘按键、鼠标...

    jQuery带音效圆形网页右键菜单代码.zip

    本项目——"jQuery带音效圆形网页右键菜单代码",就是这样一个利用jQuery实现的创新性功能,它不仅提供了常规的右键菜单功能,还增加了音效和独特的圆形设计,为用户带来更为沉浸式的浏览体验。 首先,我们来看这个...

    jQuery仿Key社游戏风格右键菜单特效源码.zip

    本篇文章将深入探讨一个特殊的jQuery插件——"jQuery仿Key社游戏风格右键菜单特效源码",它能够为网页带来类似Key社游戏中的独特右键菜单效果,增加网页的趣味性和吸引力。 Key社,以其独特的剧情和细腻的情感描绘...

    用C# ——快捷菜单

    快捷菜单,也被称为上下文菜单或右键菜单,通常在鼠标右键点击时出现,为用户提供方便的操作选项。 首先,我们需要了解C#中的菜单系统。在Windows Forms应用中,C#提供了MenuStrip和ContextMenuStrip控件来创建和...

    javascript经典特效---右键灰色菜单.rar

    标题提到的“javascript经典特效——右键灰色菜单”是一个典型的JavaScript应用场景,它涉及到了右键菜单的实现。 右键菜单通常是网页中一种常见的交互设计,当用户在页面上右键点击时,会出现一个包含若干选项的...

    JS模拟WINDOW,右键弹出下拉菜单

    这里我们使用了jQuery Context Menu插件,它允许我们轻松地创建和定制右键菜单。压缩包中的`jquery.contextmenu.r2(源代码版).js`和`jquery.contextmenu.r2.packed(压缩版).js`分别是未压缩和压缩版本的插件源码。在...

    C#137托盘,右键演示 源代码

    下面我们将深入探讨C#中托盘图标的应用,以及如何实现右键菜单功能。 首先,托盘图标是Windows应用程序中的一种常见设计,当用户关闭主窗口后,程序依然能在系统托盘区域保持运行状态,通常会有一个小图标代表该...

    contextmenu.zip

    《右键菜单技术详解——基于contextmenu.zip的实践与探讨》 在计算机用户界面设计中,右键菜单(又称快捷菜单或上下文菜单)扮演着不可或缺的角色。它为用户提供了一种快速访问特定功能的方式,特别是在复杂的软件...

    7-zip右键扩展tar.gz

    在本案例中,我们关注的是7-Zip的一个特定应用——“7-zip右键扩展tar.gz”,这是一项通过右键菜单简化tar.gz文件创建的工具。 首先,让我们理解tar.gz是什么。在Linux和Unix环境中,"tar" 是一个用于打包文件的...

    Flash.CS3网站商业设计从入门到精通第7章__Flash常用交互技术——

    Flash提供了 `ContextMenu` 类和 `ContextMenuItem` 类,允许开发者创建并控制播放器的右键菜单。通过定义函数和使用 `fscommand()` 函数,不仅可以扩展菜单功能,还能让SWF影片与Flash Player或宿主环境进行通信。...

    jquery ztree实现右键收藏功能

    现在,我们进入核心部分——实现右键菜单。这需要我们在JavaScript中编写事件监听器,并结合ZTree的API来添加收藏功能。这里的关键在于使用`contextmenu`事件,当用户在节点上右键点击时触发: ```javascript $...

    jquery的简单菜单

    在Web开发中,上下文菜单(也称为右键菜单)是一种常见的交互元素,它为用户提供了一种便捷的方式来访问与当前选择相关的操作。jQuery是一个轻量级、高性能的JavaScript库,简化了DOM操作、事件处理以及动画效果。`...

    win32锁屏软件

    在Win32 API中,`Shell_NotifyIcon`函数用于在任务栏托盘区域创建、修改或删除图标,而右键菜单则需要定义窗口类的消息映射,处理`WM_CONTEXTMENU`消息,显示相应的弹出菜单。通过`TrackPopupMenu`函数可以实现右键...

    Android学习笔记——Menu介绍(二)

    上下文菜单是针对UI界面中特定项或特定上下文的操作集合,类似于Windows中的右键菜单。在Android中,上下文菜单有两种展现形式:浮动的上下文菜单(通过长按触发)和上下文操作模式。 **创建浮动的上下文菜单** 1....

    win32汇编写的记事本

    本篇文章将深入探讨一个特别的项目——使用Win32汇编语言编写的一款记事本程序,它不仅实现了基本的文字编辑功能,还具备了右键菜单、拖放操作和状态栏提示等高级特性。 首先,我们来理解一下Win32汇编语言。Win32...

    完整版近在眼前-超级列表框高级应用技巧.rar

    总的来说,《完整版近在眼前-超级列表框高级应用技巧》涵盖了超级列表框在Windows应用程序开发中的各种高级技术,包括但不限于样式设置、数据绑定、自定义视图、分组管理、右键菜单、拖放操作以及性能优化等。...

Global site tag (gtag.js) - Google Analytics