List Info

Thread: minor change to contextMenu plugin




minor change to contextMenu plugin
country flaguser name
Sweden
2007-03-29 17:56:36
Hi,

I'm making good use of the excellent contextMenu plugin.
However, I have a little problem with the callback when
the menu has been triggered. I want to get hold of which
menu element that was choosen. Since I setup the menu
programmatically, I can't hardcode the value. Perhaps,
my poor Javscript knowledge is failing me...

I setup an object for the contextMenu binding option like
this:

this.cm_owners = new Object();


for (var i=0; i < owners.length; i++) {


  this.cm_owners["#"+owners[i]] = function(t)
{this.saveOwner(owners[i],t.id);}.bind(this)

}

then, later on I setup the menu:

 
$("td.owner").contextMenu("#ownerMenu",
{


      bindings : this.cm_owners


  });

but this dosn't work, owners[i] is not bound in the
closure...(why ?)

Well, I ended up modifying jquery.contextmenu.js so that it
also send in the menu Id, thus the above becomes:

this.cm_owners = new Object();


for (var i=0; i < owners.length; i++) {


  this.cm_owners["#"+owners[i]] = function(t,k)
{this.saveOwner(k,t.id);}.bind(this)

}

Below is the diff for the contextMenu plugin code.

Surely I'm doing something wrong so any hints...

Cheers, Tobbe


--- jquery.contextmenu.js       2007-03-30
00:18:00.000000000 +0200
+++ jquery.contextmenu.js~      2007-03-09
00:05:50.000000000 +0100
 -83,7
+83,7 
     $.each(cur.bindings, function(id, func) {
       $(id, menu).bind("click", function() {
         hide();
-        func(trigger, id);
+        func(trigger);
       });
     });
    
menu.css({"left":e.pageX,"top":e.pageY})
.show();


_______________________________________________
jQuery mailing list
discussjquery.com
http://jquery.com/discuss/


[1]

about | contact  Other archives ( Real Estate discussion Medical topics )