我开发了一个用于分配contextmenu的插件。 Html代码:
<ul id='list1'>
<li class='item'>Items</li>
<li class='item'>Items</li>
<li class='item'>Items</li>
...
</ul>
jquery插件代码
$(function(){
$.fn.cnxtmenu=function(options){
this.bind('contextmenu',function(){
//To display menu
});
}
});
使用插件
$('#list1').cnxtmenu(options);
$('.item').cnxtmenu(options);
我的问题是插件代码执行多次。
答案 0 :(得分:1)
我的第一个猜测是,当您将处理程序附加到多个元素及其容器时,事件正在冒泡并且处理程序执行两次。所以,在bind
中,试试这个:
// Remember to pass 'ev' to the handler
this.bind('contextmenu',function(ev){
ev.stopPropagation();
//To display menu
});
正如我告诉过你的那样,是我的第一个猜测。我需要触发contextmenu
事件的代码来提供更准确的答案。如果您的代码正在执行,那么您必须拥有$(something).trigger('contextmenu')