From 0530ecca0f670a413a69675f7624b2bb854d381c Mon Sep 17 00:00:00 2001
From: "Martin@MBP"
Demo with jQuery UI 1.11
—
+ Demo with jQuery UI 1.12
+ —
Demo with jQuery UI 1.10
+ Demo with jQuery UI 1.11
+ —
+ Demo with jQuery UI 1.12
+ —
+ Demo with jQuery UI 1.10
+ Right-click in an element to open the context menu: Open context menu using
Demo with jQuery UI 1.11
—
+ Demo with jQuery UI 1.12
+ —
Demo with jQuery UI 1.10
@@ -525,6 +525,43 @@ $(document).contextmenu({
```
+### [Howto] Bind different contextmenus to the same DOM element
+
+This is especially useful if we want to bind contextmenus for different selectors
+to the `document` element, in order to make them global:
+
+```js
+$(document).contextmenu({
+ delegate: ".hasmenu",
+ menu: ...,
+ select: function(event, ui) {
+ alert("select contextmenu 1" + ui.cmd + " on " + ui.target.text());
+ }
+});
+```
+
+Another call to `$(document).contextmenu({...})` would destroy the previous
+instance, because the [jQuery Widget Factory](https://learn.jquery.com/jquery-ui/widget-factory/)
+only allows one instance per element.
+
+The soulution is to create new widget with another name but identical functionality:
+
+```js
+// 1. Create and register another widget that inherits directly from
+// jquery-ui-contextmenu:
+$.widget("moogle.contextmenu2", $.moogle.contextmenu, {});
+// 2. Now we can bind this new widget to the same DOM element without
+// destroying a previous widget.
+$(document).contextmenu2({
+ delegate: ".hasmenu2",
+ menu: ...,
+ select: function(event, ui) {
+ alert("select contextmenu2" + ui.cmd + " on " + ui.target.text());
+ }
+});
+```
+
+
# Credits
Thanks to all [contributors](https://github.com/mar10/jquery-ui-contextmenu/contributors).
From 599ea7c3fcb04bbbd76e8661905ab4d108f3c7ef Mon Sep 17 00:00:00 2001
From: "Martin@MBP"
").appendTo(e),a.moogle.contextmenu.createMenuMarkup(c.children,d)),this.getMenu().menu("refresh"))},showEntry:function(a,b){this._getMenuEntry(a).toggle(b!==!1)}}),a.extend(a.moogle.contextmenu,{createEntryMarkup:function(b,c){var d=null;/[^\-\u2014\u2013\s]/.test(b.title)?(e?(c.attr("data-command",b.cmd),d=a("",{html:""+b.title,href:"#"}).appendTo(c),b.uiIcon&&d.append(a("").addClass(b.uiIcon))):(c.attr("data-command",b.cmd).html(""+b.title),a.isFunction(b.action)&&c.data("actionHandler",b.action),b.uiIcon&&c.append(a("").addClass(b.uiIcon))),a.isFunction(b.action)&&c.data("actionHandler",b.action),b.disabled&&c.addClass("ui-state-disabled"),b.addClass&&c.addClass(b.addClass),a.isPlainObject(b.data)&&c.data(b.data),null!=b.tooltip&&c.attr("title",b.tooltip)):c.text(b.title)},createMenuMarkup:function(b,c){var d,e,f,g;for(null==c&&(c=a("
").appendTo("body")),d=0;d
").appendTo(g),a.moogle.contextmenu.createMenuMarkup(e.children,f));return c},isMenu:function(a){return e?a.has(">a[aria-haspopup='true']").length>0:a.is("[aria-haspopup='true']")},replaceFirstTextNodeChild:function(a,b){a.contents().filter(function(){return 3===this.nodeType}).first().replaceWith(b)},updateTitle:function(b,c){e?a.moogle.contextmenu.replaceFirstTextNodeChild(a("a",b),c):a.moogle.contextmenu.replaceFirstTextNodeChild(b,c)}})});
+!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery","jquery-ui/menu"],a):a(jQuery)}(function(a){"use strict";var b="onselectstart"in document.createElement("div"),c=a.ui.menu.version.match(/^(\d)\.(\d+)/),d={major:parseInt(c[1],10),minor:parseInt(c[2],10)},e=d.major<2&&d.minor<11;a.widget("moogle.contextmenu",{version:"@VERSION",options:{addClass:"ui-contextmenu",autoFocus:!1,autoTrigger:!0,delegate:null,hide:{effect:"fadeOut",duration:"fast"},ignoreParentSelect:!0,menu:null,position:null,preventContextMenuForPopup:!1,preventSelect:!1,show:{effect:"slideDown",duration:"fast"},taphold:!1,uiMenuOptions:{},beforeOpen:a.noop,blur:a.noop,close:a.noop,create:a.noop,createMenu:a.noop,focus:a.noop,open:a.noop,select:a.noop},_create:function(){var c,d,e,f=this.options;if(this.$headStyle=null,this.$menu=null,this.menuIsTemp=!1,this.currentTarget=null,this.previousFocus=null,f.preventSelect){e=(a(this.element).is(document)?a("body"):this.element).uniqueId().attr("id"),c="#"+e+" "+f.delegate+" { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }",this.$headStyle=a("").prop("type","text/css").appendTo("head");try{this.$headStyle.html(c)}catch(g){this.$headStyle[0].styleSheet.cssText=c}b&&this.element.delegate(f.delegate,"selectstart"+this.eventNamespace,function(a){a.preventDefault()})}this._createUiMenu(f.menu),d="contextmenu"+this.eventNamespace,f.taphold&&(d+=" taphold"+this.eventNamespace),this.element.delegate(f.delegate,d,a.proxy(this._openMenu,this))},_destroy:function(){this.element.undelegate(this.eventNamespace),this._createUiMenu(null),this.$headStyle&&(this.$headStyle.remove(),this.$headStyle=null)},_createUiMenu:function(b){var c,d=this.options;this.isOpen()&&(c=this.currentTarget,this._closeMenu(!0),this.currentTarget=c),this.menuIsTemp?this.$menu.remove():this.$menu&&this.$menu.menu("destroy").removeClass(this.options.addClass).hide(),this.$menu=null,this.menuIsTemp=!1,b&&(a.isArray(b)?(this.$menu=a.moogle.contextmenu.createMenuMarkup(b),this.menuIsTemp=!0):this.$menu="string"==typeof b?a(b):b,this.$menu.hide().addClass(d.addClass).menu(a.extend(!0,{},d.uiMenuOptions,{blur:a.proxy(d.blur,this),create:a.proxy(d.createMenu,this),focus:a.proxy(d.focus,this),select:a.proxy(function(b,c){var e,f=a.moogle.contextmenu.isMenu(c.item),g=c.item.data("actionHandler");c.cmd=c.item.attr("data-command"),c.target=a(this.currentTarget),f&&d.ignoreParentSelect||(e=this._trigger.call(this,"select",b,c),g&&(e=g.call(this,b,c)),e!==!1&&this._closeMenu.call(this),b.preventDefault())},this)})))},_openMenu:function(b,c){var d,e,f=this.options,g=f.position,h=this,i=!!b.isTrigger,j={menu:this.$menu,target:a(b.target),extraData:b.extraData,originalEvent:b,result:null};if(f.autoTrigger||i){if(b.preventDefault(),this.currentTarget=b.target,!c){if(d=this._trigger("beforeOpen",b,j),e=j.result&&a.isFunction(j.result.promise)?j.result:null,j.result=null,d===!1)return this.currentTarget=null,!1;if(e)return e.done(function(){h._openMenu(b,!0)}),this.currentTarget=null,!1;j.menu=this.$menu}a(document).bind("keydown"+this.eventNamespace,function(b){b.which===a.ui.keyCode.ESCAPE&&h._closeMenu()}).bind("mousedown"+this.eventNamespace+" touchstart"+this.eventNamespace,function(b){a(b.target).closest(".ui-menu-item").length||h._closeMenu()}),a.isFunction(g)&&(g=g(b,j)),g=a.extend({my:"left top",at:"left bottom",of:void 0===b.pageX?b.target:b,collision:"fit"},g),this.$menu.show().css({position:"absolute",left:0,top:0}).position(g).hide(),f.preventContextMenuForPopup&&this.$menu.bind("contextmenu"+this.eventNamespace,function(a){a.preventDefault()}),this._show(this.$menu,f.show,function(){f.autoFocus&&(h.$menu.focus(),h.previousFocus=a(b.target)),h._trigger.call(h,"open",b,j)})}},_closeMenu:function(b){var c=this,d=b?!1:this.options.hide;a(document).unbind("mousedown"+this.eventNamespace).unbind("touchstart"+this.eventNamespace).unbind("keydown"+this.eventNamespace),c.currentTarget=null,this.$menu?(this.$menu.unbind("contextmenu"+this.eventNamespace),this._hide(this.$menu,d,function(){c.previousFocus&&(c.previousFocus.focus(),c.previousFocus=null),c._trigger("close")})):c._trigger("close")},_setOption:function(b,c){switch(b){case"menu":this.replaceMenu(c)}a.Widget.prototype._setOption.apply(this,arguments)},_getMenuEntry:function(a){return this.$menu.find("li[data-command="+a+"]")},close:function(){this.isOpen()&&this._closeMenu()},enableEntry:function(a,b){this._getMenuEntry(a).toggleClass("ui-state-disabled",b===!1)},getMenu:function(){return this.$menu},isOpen:function(){return!!this.$menu&&!!this.currentTarget},open:function(a,b){b=b||{};var c=jQuery.Event("contextmenu",{target:a.get(0),extraData:b});return this.element.trigger(c)},replaceMenu:function(a){this._createUiMenu(a)},setEntry:function(b,c){var d,e=this._getMenuEntry(b);"string"==typeof c?a.moogle.contextmenu.updateTitle(e,c):(e.empty(),c.cmd=c.cmd||b,a.moogle.contextmenu.createEntryMarkup(c,e),a.isArray(c.children)&&(d=a("
").appendTo(e),a.moogle.contextmenu.createMenuMarkup(c.children,d)),this.getMenu().menu("refresh"))},showEntry:function(a,b){this._getMenuEntry(a).toggle(b!==!1)}}),a.extend(a.moogle.contextmenu,{createEntryMarkup:function(b,c){var d=null;c.attr("data-command",b.cmd),/[^\-\u2014\u2013\s]/.test(b.title)?(e?(d=a("",{html:""+b.title,href:"#"}).appendTo(c),b.uiIcon&&d.append(a("").addClass(b.uiIcon))):(c.html(""+b.title),a.isFunction(b.action)&&c.data("actionHandler",b.action),b.uiIcon&&c.append(a("").addClass(b.uiIcon))),a.isFunction(b.action)&&c.data("actionHandler",b.action),b.disabled&&c.addClass("ui-state-disabled"),b.addClass&&c.addClass(b.addClass),a.isPlainObject(b.data)&&c.data(b.data),null!=b.tooltip&&c.attr("title",b.tooltip)):c.text(b.title)},createMenuMarkup:function(b,c){var d,e,f,g;for(null==c&&(c=a("
").appendTo("body")),d=0;d
").appendTo(g),a.moogle.contextmenu.createMenuMarkup(e.children,f));return c},isMenu:function(a){return e?a.has(">a[aria-haspopup='true']").length>0:a.is("[aria-haspopup='true']")},replaceFirstTextNodeChild:function(a,b){a.contents().filter(function(){return 3===this.nodeType}).first().replaceWith(b)},updateTitle:function(b,c){e?a.moogle.contextmenu.replaceFirstTextNodeChild(a("a",b),c):a.moogle.contextmenu.replaceFirstTextNodeChild(b,c)}})});
//# sourceMappingURL=jquery.ui-contextmenu.min.js.map
\ No newline at end of file
diff --git a/jquery.ui-contextmenu.min.js.map b/jquery.ui-contextmenu.min.js.map
index 33a42e4..aea7b09 100644
--- a/jquery.ui-contextmenu.min.js.map
+++ b/jquery.ui-contextmenu.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"jquery.ui-contextmenu.min.js","sources":["jquery.ui-contextmenu.js"],"names":["factory","define","amd","jQuery","$","supportSelectstart","document","createElement","match","ui","menu","version","uiVersion","major","parseInt","minor","isLTE110","widget","options","addClass","autoFocus","autoTrigger","delegate","hide","effect","duration","ignoreParentSelect","position","preventContextMenuForPopup","preventSelect","show","taphold","uiMenuOptions","beforeOpen","noop","blur","close","create","createMenu","focus","open","select","_create","cssText","eventNames","targetId","opts","this","$headStyle","$menu","menuIsTemp","currentTarget","previousFocus","element","is","uniqueId","attr","prop","appendTo","html","e","styleSheet","eventNamespace","event","preventDefault","_createUiMenu","proxy","_openMenu","_destroy","undelegate","remove","menuDef","ct","isOpen","_closeMenu","removeClass","isArray","moogle","contextmenu","createMenuMarkup","extend","retval","isParent","isMenu","item","actionHandler","data","cmd","target","_trigger","call","recursive","res","promise","posOption","self","manualTrigger","isTrigger","extraData","originalEvent","result","isFunction","done","bind","which","keyCode","ESCAPE","closest","length","my","at","of","undefined","pageX","collision","css","left","top","_show","immediately","hideOpts","unbind","_hide","_setOption","key","value","replaceMenu","Widget","prototype","apply","arguments","_getMenuEntry","find","enableEntry","flag","toggleClass","getMenu","Event","get","trigger","setEntry","entry","$ul","$entryLi","updateTitle","empty","createEntryMarkup","children","showEntry","toggle","$parentLi","$a","test","title","href","uiIcon","append","action","disabled","isPlainObject","tooltip","text","$parentUl","i","$li","has","replaceFirstTextNodeChild","elem","contents","filter","nodeType","first","replaceWith"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"jquery.ui-contextmenu.min.js","sources":["jquery.ui-contextmenu.js"],"names":["factory","define","amd","jQuery","$","supportSelectstart","document","createElement","match","ui","menu","version","uiVersion","major","parseInt","minor","isLTE110","widget","options","addClass","autoFocus","autoTrigger","delegate","hide","effect","duration","ignoreParentSelect","position","preventContextMenuForPopup","preventSelect","show","taphold","uiMenuOptions","beforeOpen","noop","blur","close","create","createMenu","focus","open","select","_create","cssText","eventNames","targetId","opts","this","$headStyle","$menu","menuIsTemp","currentTarget","previousFocus","element","is","uniqueId","attr","prop","appendTo","html","e","styleSheet","eventNamespace","event","preventDefault","_createUiMenu","proxy","_openMenu","_destroy","undelegate","remove","menuDef","ct","isOpen","_closeMenu","removeClass","isArray","moogle","contextmenu","createMenuMarkup","extend","retval","isParent","isMenu","item","actionHandler","data","cmd","target","_trigger","call","recursive","res","promise","posOption","self","manualTrigger","isTrigger","extraData","originalEvent","result","isFunction","done","bind","which","keyCode","ESCAPE","closest","length","my","at","of","undefined","pageX","collision","css","left","top","_show","immediately","hideOpts","unbind","_hide","_setOption","key","value","replaceMenu","Widget","prototype","apply","arguments","_getMenuEntry","find","enableEntry","flag","toggleClass","getMenu","Event","get","trigger","setEntry","entry","$ul","$entryLi","updateTitle","empty","createEntryMarkup","children","showEntry","toggle","$parentLi","$a","test","title","href","uiIcon","append","action","disabled","isPlainObject","tooltip","text","$parentUl","i","$li","has","replaceFirstTextNodeChild","elem","contents","filter","nodeType","first","replaceWith"],"mappings":"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"}
\ No newline at end of file
diff --git a/package.json b/package.json
index 5390b3b..99077cb 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "ui-contextmenu",
"filename": "jquery.ui-contextmenu.min.js",
"main": "jquery.ui-contextmenu.js",
- "version": "1.10.1-0",
+ "version": "1.11.0",
"title": "jQuery UI context menu plugin",
"description": "Turn a jQuery UI Menu widget into a contextmenu.",
"keywords": [
diff --git a/ui-contextmenu.jquery.json b/ui-contextmenu.jquery.json
index 14023f6..6db849a 100644
--- a/ui-contextmenu.jquery.json
+++ b/ui-contextmenu.jquery.json
@@ -1,6 +1,6 @@
{
"name": "ui-contextmenu",
- "version": "1.10.1-0",
+ "version": "1.11.0",
"title": "jQuery UI context menu plugin",
"description": "Turn a jQuery UI Menu widget into a contextmenu.",
"keywords": [
From c6b842d5cca5c42d9bc54b1693c1d1366a4977d6 Mon Sep 17 00:00:00 2001
From: "Martin@MBP"
` element or definition list (i.e.
`[{title: "Paste", cmd: "paste"}, ...]`).
@@ -27,7 +27,7 @@ See also the [Change Log](https://github.com/mar10/jquery-ui-contextmenu/blob/ma
[  ](http://wwwendt.de/tech/demo/jquery-contextmenu/demo/ "Live demo")
-## Tutorial
+## Getting Started
First, include dependencies:
@@ -40,10 +40,10 @@ First, include dependencies:
```html
-
-
-
+
+
```
@@ -76,491 +76,13 @@ $("#container").contextmenu({
});
```
-The `delegate` option defines a CSS selector, which is evaluated for all
-elements inside the context element (`#container` in our example).
-In order to attach menus to *all* matching elements on the page that have
-`class="hasmenu"`, we may use `document` as context:
-```js
-$(document).contextmenu({
- delegate: ".hasmenu",
- ...
-});
-```
-**Note:** only one contextmenu widget instance can be bound to one element.
-See the *Howto* below for a solution to this problem.
-
-The `menu` options may contain a (nested) array of entry defiitions.
-Following a list of available properties:
-
-
-
-Instead of handling all menu commands in the `select` event, it is also possible
-to attach callbacks directly to menu entries:
-```js
-$(document).contextmenu({
- delegate: ".hasmenu",
- menu: [
- {title: "Copy", uiIcon: "ui-icon-copy", action: function(event, ui){
- alert("Copy " + ui.target.text());
- }
- },
- ...
-});
-```
-
-### Initialize menu from an existing `Function
, default: n.a.
- Optional callback that will be executed when the entry is selected.
-String
, default: ""
- Additional class name(s) to be added to the entries <li> element.
- Separate multiple class names with a space.
- Custom CSS may be applied like .ui-menu .my-class { color: red; }
.
-String
, default: ""
- Optional identifier associated with the menu entry.
- It can later be accessed in the select event as ui.cmd
.
-Object
, default: {}
- Optional hash of additional properties that will be added to the entry's
- data attribute.
- It can later be accessed in the select event as ui.item.data()
.
-Boolean
, default: false
- Pass true to disable the entry.
-String
, default: ""
- The displayed name of the menu entry. Use dashes ("---"
) to
- define a separator.
-String
, default: ""
- If defined, an icon is added to the menu entry. For example passing
- "ui-icon-copy"
will generate this element:
- <span class='ui-icon ui-icon-copy' />
.
- See also <Icon Overview.
-` element
-
-In this case `menu` must point to the markup:
-
-```js
-$(document).contextmenu({
- delegate: ".hasmenu",
- menu: "#options",
- select: function(event, ui) {
- ...
- }
-});
-```
-We also have to provide some HTML markup that defines the context menu structure,
-see [jQueryUI menu] for details:
-
-```html
-
-
-```
-
-**Note:** until and including jQuery UI 1.10 the use of anchors (``) in menu
-items was required:
-```html
-
-
-
-
-```
+For more information:
-
-### Modify the menu depending on the context
-
-Often we need to modify the menu before it is displayed, in order to reflect the
-current context.
-This can be done in the `beforeOpen` event:
-
-```js
-$(document).contextmenu({
- delegate: ".hasmenu",
- menu: [
- {title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors"},
- {title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy"},
- {title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true },
- ...
- ],
- beforeOpen: function(event, ui) {
- var $menu = ui.menu,
- $target = ui.target,
- extraData = ui.extraData; // optionally passed when menu was opened by call to open()
-
- // Optionally return false, to prevent opening the menu
-// return false;
-
- // En/disable single entries
- $(document).contextmenu("enableEntry", "paste", false);
- // Show/hide single entries
- $(document).contextmenu("showEntry", "cut", false);
- // Redefine the title of single entries
- $(document).contextmenu("setEntry", "copy", "Copy '" + $target.text() + "'")
- // Redefine all attributes of single entries
- $(document).contextmenu("setEntry", "cut", {title: "Cuty", uiIcon: "ui-icon-heart", disabled: true});
- // Redefine the whole menu
- $(document).contextmenu("replaceMenu", [{title: "aaa"}, {title: "bbb"}, ...]);
- // Redefine the whole menu from another HTML definition
- $(document).contextmenu("replaceMenu", "#options2");
- },
- ...
-});
-```
-
-
-## API documentation
-### Options
-
-
-
-
-
-### Methods
-
-String
,
- default: "ui-contextmenu"
- This class is added to the outer ul element.
-Boolean
,
- default: false
- Set keyboard focus to first menu entry on open.
-Boolean
,
- default: true
- Set `false` to prevent opening on a browser's `contextmenu` event, which is
- normally triggered by a mouse rightclick.
- The menu can still be opened by calling the `open()` method.
-String
- A selector to filter the elements that trigger the context menu.
- Boolean | Number | String | Object
,
- default: { effect: "fadeOut", duration: "fast" }
- Effect applied when hiding the popup.
- See sample
- for possible option values.
-Boolean
, default: true
- If true
, a click on a menu item that contains a sub-menu, will
- not trigger the select
event.
-Object[] | String | jQuery
- jQuery object or selector of HTML markup that
- defines the context menu structure (see
- jQueryUI menu for details).
-
- If an array of objects is passed, it will be used to generate
- such markup on the fly.
-Object | Function
,
- default: {my: "left top", at: "center", of: event, collision: "fit"}
- Define position where popup opens. A simple position may be passed.
- Also a function may be specified, to recalculate position every time:
-
- $("#container").contextmenu({
- position: function(event, ui){
- return {my: "left top", at: "left bottom", of: ui.target};
- }, ...
-Boolean
, default: false
- Prevent that a right click inside an open popup menu will open the browser's
- system context menu.
-Boolean
, default: false
- Prevent accidental text selection of potential menu targets on doubleclick
- or drag.
- Boolean | Number | String | Object
,
- default: { effect: "slideDown", duration: "fast"}
- Effect applied when showing the popup.
- See sample
- for possible option values.
-Boolean
, default: false
- Open menu on taphold events,
- which is especially useful for touch devices (but may require external
- plugins to generate taphold
events).
-String
, optional
- Add a title
attribute to the menu markup, which will be displayed
- as tooltip by most browser (or external plugins).
-Object
, default: {}
- Custom options passed to UI Menu, when the widget is created.
- Especially useful to tweak the position of submenus.
-
-
-
-
-### Events
-
-jquery-contextmenu exposes events from [jQueryUI menu]: `blur`, `create`, `focus`, `select`.
-However, since the `event.target` parameter contains the menu item, we additionally pass the element
-that was right-clicked in `ui.target`.
-
-Events may be handled by passing a handler callback option:
-```js
-$("#container").contextmenu({
- [...]
- select: function(event, ui) {
- alert("select " + ui.cmd + " on " + ui.target.text());
- }
-});
-```
-
-Alternatively a handler may be bound, so this is equivalent:
-```js
-$("#container").bind("contextmenuselect", function(event, ui) {
- alert("select " + ui.cmd + " on " + ui.target.text());
-});
-```
-
-
- Call like $(...).contextmenu("close");
.
-
- Call like $(...).contextmenu("enableEntry", "paste", false);
.
-UL
element.
-
- Call like $(...).contextmenu("open", $(target)[, extraData]);
.
- Optional `extraData` will be available in event handlers as ui.extraData
.
-
- Call like $(...).contextmenu("replaceMenu", "#menu2");
.
- or $(...).contextmenu("replaceMenu", [{title: "aaa"}, {title: "bbb"}, ...]);
.
-
- `data` may be a title string or a menu definition object.
- Call like $(...).contextmenu("setEntry", "paste", "Paste link");
.
-
- Call like $(...).contextmenu("showEntry", "paste", false);
.
-
-
-
-
-# Tips and Tricks
-### [Howto] Add right-aligned shortcut hints
-
-Simply add a tag of your choice to the title (for example ``)
-```js
-$(document).contextmenu({
- delegate: ".hasmenu",
- menu: [
- {title: "Edit title[F2]", cmd: "rename"},
- {title: "Copy [Ctrl+C]", cmd: "copy"}, ...
- ],
-```
-and make it right aligned via CSS:
-```css
-.ui-menu kbd {
- float: right;
-}
-```
-
-### [Howto] Enable keyboard control
-
-In order open a context menu with the keyboard, make sure the target elements
-are tabbable, for example by adding a `tabindex="0"` attribute.
-Also make sure the `autoFocus: true` option is set.
-This will allow to Use Tab and the Windows Menu keys.
-
-
-### [Howto] Modify the menu using an asynchronous request
-
-```js
-$(document).contextmenu({
- ...
- beforeOpen: function(event, ui) {
- // Immediate menu changes
- $(document).contextmenu("setEntry", "test", "(loading...)");
- // Menu opens, then we submit a request and wait for the resonse
- $.ajax({
- ...
- }).done(function(data) {
- // Modify the menu from the ajax response. The menu will be updated
- // while open
- $(document).contextmenu("setEntry", "test", {
- title: "New entry", cmd: "test",
- children: [ ... ]
- });
- });
- },
-```
-
-Alternatively we can delay the opening until the response arrives:
-```js
-$(document).contextmenu({
- ...
- beforeOpen: function(event, ui) {
- var dfd = new $.Deferred();
-
- $.ajax({
- ...
- }).done(function(data) {
- // Modify the menu from the ajax response. The menu will be opened
- // afterwards
- $(document).contextmenu("setEntry", "test", {
- title: "New entry", cmd: "test",
- children: [ ... ]
- });
- dfd.resolve(); // Notify about finished response
- });
-
- // Return a promise to delay opening until an async response becomes
- // available
- ui.result = dfd.promise();
- },
-```
-
-
-### [Howto] Bind different contextmenus to the same DOM element
-
-This is especially useful if we want to bind contextmenus for different selectors
-to the `document` element, in order to make them global:
-
-```js
-$(document).contextmenu({
- delegate: ".hasmenu",
- menu: ...,
- select: function(event, ui) {
- alert("select contextmenu 1" + ui.cmd + " on " + ui.target.text());
- }
-});
-```
-
-Another call to `$(document).contextmenu({...})` would destroy the previous
-instance, because the [jQuery Widget Factory](https://learn.jquery.com/jquery-ui/widget-factory/)
-only allows one instance per element.
-
-The soulution is to create new widget with another name but identical functionality:
-
-```js
-// 1. Create and register another widget that inherits directly from
-// jquery-ui-contextmenu:
-$.widget("moogle.contextmenu2", $.moogle.contextmenu, {});
-// 2. Now we can bind this new widget to the same DOM element without
-// destroying a previous widget.
-$(document).contextmenu2({
- delegate: ".hasmenu2",
- menu: ...,
- select: function(event, ui) {
- alert("select contextmenu2" + ui.cmd + " on " + ui.target.text());
- }
-});
-```
+ * [Read the Tutorial](https://github.com/mar10/jquery-ui-contextmenu/wiki) and
+ [API Reference](https://github.com/mar10/jquery-ui-contextmenu/wiki/ApiRef)
+ * Have a look at the [Live demo page](http://wwwendt.de/tech/demo/jquery-contextmenu/demo/)
+ * Ask questions on [Stackoverflow](http://stackoverflow.com/questions/tagged/jquery-ui-contextmenu)
+ * [Play with the jsFiddle](http://jsfiddle.net/mar10/6o3u8a88/)
# Credits
From 5fb91bded3adf8aa9e1b92e7470fa4a672978a26 Mon Sep 17 00:00:00 2001
From: "Martin@MBP"
- Return false
to prevent opening.
- This is also a good place to modify the menu (i.e. hiding, disabling, or
- renaming entries, or replace the menu altogether).
-
- ui.cmd
contains the command id.
- Return false
to prevent closing the menu.
-").appendTo(e),a.moogle.contextmenu.createMenuMarkup(c.children,d)),this.getMenu().menu("refresh"))},showEntry:function(a,b){this._getMenuEntry(a).toggle(b!==!1)}}),a.extend(a.moogle.contextmenu,{createEntryMarkup:function(b,c){var d=null;c.attr("data-command",b.cmd),/[^\-\u2014\u2013\s]/.test(b.title)?(e?(d=a("",{html:""+b.title,href:"#"}).appendTo(c),b.uiIcon&&d.append(a("").addClass(b.uiIcon))):(c.html(""+b.title),a.isFunction(b.action)&&c.data("actionHandler",b.action),b.uiIcon&&c.append(a("").addClass(b.uiIcon))),a.isFunction(b.action)&&c.data("actionHandler",b.action),b.disabled&&c.addClass("ui-state-disabled"),b.addClass&&c.addClass(b.addClass),a.isPlainObject(b.data)&&c.data(b.data),null!=b.tooltip&&c.attr("title",b.tooltip)):c.text(b.title)},createMenuMarkup:function(b,c){var d,e,f,g;for(null==c&&(c=a("
").appendTo("body")),d=0;d
").appendTo(g),a.moogle.contextmenu.createMenuMarkup(e.children,f));return c},isMenu:function(a){return e?a.has(">a[aria-haspopup='true']").length>0:a.is("[aria-haspopup='true']")},replaceFirstTextNodeChild:function(a,b){a.contents().filter(function(){return 3===this.nodeType}).first().replaceWith(b)},updateTitle:function(b,c){e?a.moogle.contextmenu.replaceFirstTextNodeChild(a("a",b),c):a.moogle.contextmenu.replaceFirstTextNodeChild(b,c)}})});
//# sourceMappingURL=jquery.ui-contextmenu.min.js.map
\ No newline at end of file
diff --git a/test/index.html b/test/index.html
index 50fcd84..e1148fe 100644
--- a/test/index.html
+++ b/test/index.html
@@ -1,5 +1,4 @@
-
-
+
From de70862a9f1d8337b6b18be5ed104aad86ca4b2e Mon Sep 17 00:00:00 2001
From: "Martin@MBP"
;Wc0QE8B-cUPf;YxEm02E}=f34QGBBstiNVRijcvKpc(vrAUCI9B
UiAid
zL`BQ&qbNJhbop*d3e3ad(ca4eU|1b4dz4~XQ%#I!U?fSWHdFGF{sYP%azjquery.ui-contextmenu.js
jquery.ui-contextmenu.js
+
+
+ Sample 1
+
+
+ Sample 2
+
+
+
+
+
+ Sample 3
+ $("#container").contextmenu("open", $(".hasmenu:first"))
and close after 2 sec.:
+
+
diff --git a/demo/index.html b/demo/index.html
index b5d02aa..a621766 100644
--- a/demo/index.html
+++ b/demo/index.html
@@ -187,6 +187,8 @@
jquery.ui-contextmenu.js