0

コンテキストメニューを割り当てるためのプラグインを開発しました。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);

私の問題は、プラグイン コードが何度も実行されていることです。

4

1 に答える 1

1

私の最初の推測では、ハンドラーをいくつかの要素とそれらのコンテナーにもアタッチしているため、イベントがバブリングし、ハンドラーが2回実行されます。だから、あなたの中bindで、これを試してみてください:

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

私があなたに言ったように、それは私の最初の推測です。contextmenuより正確な答えを出すには、イベントをトリガーするコードが必要です。コードが実行されている場合は、どこかにある必要があります$(something).trigger('contextmenu')

于 2012-08-23T07:20:42.457 に答える