在插件中分配事件

时间:2012-08-23 06:44:14

标签: javascript jquery jquery-plugins javascript-events

我开发了一个用于分配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);

我的问题是插件代码执行多次。

1 个答案:

答案 0 :(得分:1)

我的第一个猜测是,当您将处理程序附加到多个元素及其容器时,事件正在冒泡并且处理程序执行两次。所以,在bind中,试试这个:

// Remember to pass 'ev' to the handler
this.bind('contextmenu',function(ev){
    ev.stopPropagation();
    //To display menu
});

正如我告诉过你的那样,是我的第一个猜测。我需要触发contextmenu事件的代码来提供更准确的答案。如果您的代码正在执行,那么您必须拥有$(something).trigger('contextmenu')