I am trying to late-bind context menus to elements, using the ContextMenu plugin. So on the first right-click on those elements, I would like to :
- intercept the right-click through a live event on a certain "uncontextmenued" class,
- determine if the
data('events').contextmenu
exists, - if not, attach the context-menu (and change the class to avoid re-throwing this live process),
- re-throw the right-click event to show the right-click.
I'm having trouble with the last item. jQuery allows to .click()
or to .trigger('click')
, which simulate a left-click, but there seems not to be a way to fire a right-click event through trigger
.
Or is t开发者_运维问答here?
You can trigger it by
$('#element').trigger({
type: 'mousedown',
which: 3
});
http://api.jquery.com/trigger/#example-5
There is a newer way to do this:
$('#element').triggerHandler('contextmenu');
Documentation can be found here.
Similar to this, but I'm not sure if you may be referring to jQuery UI data, but.
$('#element').mousedown(function(event)
{
if(event.which == 3)
{
if(typeof($(this).data('events')) === 'undefined')
{
$(this).data('events', { somedata: 'hello' });
}
else
{
// "re-throw" right click context menu
}
}
});
精彩评论