3

Javascript Toolbox から jQuery ContextMenu プラグインを実装しましたが、うまく動作します。特定の指定された領域を右クリックすると、必要なコンテキスト メニューが開くので、次の 1 つの点を除いてすべてでうまく機能します。

別のメニューがまだ開いているときに右クリックしてコンテキスト メニューを開くと、元のコンテキスト メニューが閉じません。テーブルの別の行をクリックする限り、他のコンテキスト メニューを閉じずに新しいコンテキスト メニューが開きます。

ただし、左クリックするとすべて閉じます。

いくつかの助け、または正しい方向へのプッシュさえも大歓迎です。

前もって感謝します!

プラグインアドレス: http://www.javascripttoolbox.com/lib/contextmenu/

編集:これはコンテキストメニューを呼び出すために使用されるコードです

$("#sku_table tbody").mousedown(function(event) {
    if (event.which === 3) {

        var sku = $(event.target).closest('tr').attr('id');
        sku = sku.replace('.', '\\.');
        var menu1 = [
            {
            'Open Item information': {
                onclick: function(menuItem, menu) {
                    //Function to open item info
                }
            }}
        ];
        $(function() {
            $('#' + sku).contextMenu(menu1, {
                theme: 'vista'
            });
        });

    }
});​

実際にメニューを開くのは$().contextMenu().

4

3 に答える 3

2

テーブル本体内を右クリックするたびに、コンテキストメニューの新しいインスタンスが作成されるようです。代わりに、コンテキストメニューを表示するセレクターを定義すると、メニューはそこにのみ表示されます。

コンテキストメニューがランダムなアイテムに表示される場合、それらのアイテムはクラスで定義する必要があり、コンテキストメニューはそのクラスからインスタンス化できます。

http://jsfiddle.net/azSMq/

$(function() {
    var menu1 = [
        {
        'Open Item information': {
            onclick: function(menuItem, menu) {
                $(this).fadeOut();
                //Function to open item info
            }
        }}
    ];
    $("#sku_table tr").contextMenu(menu1, {
        theme: 'vista'
    });
});​
于 2012-06-29T21:52:48.367 に答える
2

このコードを試してください:

$("#sku_table tr").contextMenu(menu1, { theme: 'vista',
    beforeShow: function () {
        $(document).click();
        return true;
    } 
});

ドキュメントのクリックを強制すると、他のコンテキスト メニューを自動的に非表示にするプラグイン内の内部コードが呼び出されます。

于 2012-10-02T08:55:54.673 に答える
0

興味深いことに、デモ ページは Firefox では期待どおりに動作するように見えますが、Chrome や IE では動作しません。これを処理する 1 つの方法は、右クリックしたメニューを表示する前に、開いているメニューを非表示にすることです。したがって、次のコードを追加できます。

$(".context-menu").hide();

この行の後に追加します

if(event.which === 3){

それはあなたに望ましい効果を与えるはずです。

于 2012-06-29T21:26:18.690 に答える