Skip to content

Commit aea9c47

Browse files
committed
select event has new parameters ui.cmd and ui.target.
Closed mar10#23
1 parent 38d869b commit aea9c47

File tree

4 files changed

+23
-25
lines changed

4 files changed

+23
-25
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# 0.5.0 / Unreleased
22

33
* [CHANGE] Changed widget namespace from 'ui' to 'moogle'.
4+
* [FEATURE] `select` event has new parameters `ui.cmd` and `ui.target`.
45

56
# 0.4.0 / 2013-05-28
67

README.md

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Beta. Please report issues.
1717

1818
Latest release is available for download at
1919
[The jQuery Plugin Registry](http://plugins.jquery.com/ui-contextmenu/).
20+
See also the [Change Log](https://github.com/mar10/jquery-ui-contextmenu/blob/master/CHANGELOG.md).
2021

2122

2223
## Demo
@@ -51,8 +52,7 @@ $("#container").contextmenu({
5152
]}
5253
],
5354
select: function(event, ui) {
54-
var menuId = ui.item.find(">a").attr("href");
55-
alert("select " + menuId + " on " + $(event.relatedTarget).text());
55+
alert("select " + ui.cmd + " on " + ui.target.text());
5656
}
5757
});
5858
```
@@ -207,29 +207,25 @@ jquery-contextmenu exposes events from [jQueryUI menu]: `blur`, `create`, `focus
207207
However, since the `event.target` parameter contains the menu item, we additionally pass the element
208208
that was right-clicked in `event.relatedTarget`.
209209

210-
Events may be handled by defining a handler option:
210+
Events may be handled by passing a handler callback option:
211211
```js
212212
$("#container").contextmenu({
213213
[...]
214214
select: function(event, ui) {
215-
var menuId = ui.item.find(">a").attr("href"),
216-
target = event.relatedTarget;
217-
alert("select " + menuId + " on " + $(target).text());
215+
alert("select " + ui.cmd + " on " + ui.target.text());
218216
}
219217
});
220218
```
221219

222220
Alternatively a handler may be bound, so this is equivalent:
223221
```js
224222
$("#container").bind("contextmenuselect", function(event, ui) {
225-
var menuId = ui.item.find(">a").attr("href"),
226-
target = event.relatedTarget;
227-
alert("select " + menuId + " on " + $(target).text());
223+
alert("select " + ui.cmd + " on " + ui.target.text());
228224
}
229225
```
230226
231227
<dl>
232-
<dt>beforeOpen(event)</dt>
228+
<dt>beforeOpen(event, ui)</dt>
233229
<dd>
234230
Triggered just before the popup menu is opened.<br>
235231
Return <code>false</code> to prevent opening.<br>
@@ -263,6 +259,7 @@ $("#container").bind("contextmenuselect", function(event, ui) {
263259
<dt>select(event, ui)</dt>
264260
<dd>
265261
Triggered when a menu item is selected.<br>
262+
<code>ui.cmd</code> contains thecommand id.
266263
Return <code>false</code> to prevent closing the menu.
267264
</dd>
268265
</dl>
@@ -276,6 +273,6 @@ Contributors in order of appearance:
276273
277274
~~~~
278275
279-
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/mar10/jquery-contextmenu/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
276+
![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/mar10/jquery-contextmenu/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
280277
281278
[jQueryUI menu]: http://jqueryui.com/menu/

demo/index.html

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -80,21 +80,20 @@
8080
]}
8181
],
8282
select: function(event, ui) {
83-
var menuId = ui.item.find(">a").attr("href"),
84-
$target = $(event.relatedTarget);
85-
switch(menuId){
86-
case "#copy":
83+
var $target = $(event.relatedTarget);
84+
switch(ui.cmd){
85+
case "copy":
8786
CLIPBOARD = $target.text();
8887
break
89-
case "#paste":
88+
case "paste":
9089
CLIPBOARD = "";
9190
break
9291
}
93-
alert("select " + menuId + " on " + $(event.relatedTarget).text());
92+
alert("select " + ui.cmd + " on " + ui.target.text());
9493
},
9594
beforeOpen: function(event, ui) {
9695
var $menu = ui.menu,
97-
$target = $(event.relatedTarget);
96+
$target = ui.target;
9897
// console.log("beforeOpen", this, event, ui, "" + CLIPBOARD);
9998
$(document)
10099
// .contextmenu("replaceMenu", [{title: "aaa"}, {title: "bbb"}])
@@ -127,16 +126,15 @@
127126
blur: function(event, ui) {
128127
$("#info").text("");
129128
},
130-
beforeOpen: function(event) {
129+
beforeOpen: function(event, ui) {
131130
// $("#container").contextmenu("replaceMenu", [{title: "aaa"}, {title: "bbb"}]);
132-
// alert("beforeopen on " + $(event.relatedTarget).text());
131+
// alert("beforeopen on " + ui.target.text());
133132
},
134133
open: function(event, ui) {
135-
// alert("open on " + $(event.relatedTarget).text());
134+
// alert("open on " + ui.target.text());
136135
},
137136
select: function(event, ui) {
138-
var menuId = ui.item.find(">a").attr("href");
139-
alert("select " + menuId + " on " + $(event.relatedTarget).text());
137+
alert("select " + ui.cmd + " on " + ui.target.text());
140138
}
141139
});
142140

jquery.ui-contextmenu.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@
8989
select: $.proxy(function(event, ui){
9090
// Also pass the target that the menu was triggered on:
9191
event.relatedTarget = this.currentTarget;
92+
ui.cmd = normCommand(ui.item.find(">a").attr("href"));
93+
ui.target = $(this.currentTarget);
9294
// ignore clicks, if they only open a sub-menu
9395
var isParent = (ui.item.has(">a[aria-haspopup='true']").length > 0);
9496
if( !isParent || !this.options.ignoreParentSelect){
@@ -130,7 +132,7 @@
130132
openEvent = event,
131133
// if called by 'open' method, 'relatedTarget' is the requested target object
132134
parentTarget = openEvent.target ? openEvent.target : openEvent,
133-
ui = {menu: $menu};
135+
ui = {menu: $menu, target: $(openEvent.target)};
134136
this.currentTarget = openEvent.target;
135137
// Prevent browser from opening the system context menu
136138
event.preventDefault();
@@ -175,7 +177,7 @@
175177
}).position(posOption).hide();
176178

177179
this._show($menu, this.options.show, function(){
178-
self._trigger.call(self, "open", event);
180+
self._trigger.call(self, "open", event, ui);
179181
});
180182
},
181183
/** Close popup. */

0 commit comments

Comments
 (0)