2011-07-21 19 views
1

私はa jquery contextMenu plug-inを使用しており、私が解決しようとしている小さな問題があります。jQueryのcontextMenuを閉じるにはどうしたらいいですか?

現在、私が「削除」メニュー項目をクリックすると、私が呼び出す関数はdeleteTests関数の確認ボックスを表示します。この時点で、contextMenuはまだ表示され、確認ボックスが表示されます。

理想的には、ユーザーがメニュー項目を選択してから削除機能に進むとすぐにcontextMenuを閉じたいと思います。

これは簡単ではないようですが、うまく動作しないようです。

$(document).ready(function(){ 
    $.contextMenu({selector: '#context-menu', items: { 
    "delete": {name: "Delete", icon: "delete", callback: menu_click }, 
    sep1: "---------", 
    quit: {name: "Quit", icon: "quit", callback: $.noop} 
}}); 

function menu_click(key, opt) { 
    if (key == "delete") { 
    // Need to close menu here 
     deleteTests(); 
    } 
} 
}); 
+0

_Which_ jQueryのコンテキストメニューをトリガするために試みることができますか?リンクを提供する。 –

+0

申し訳ありません:http://abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/ – Paul

+0

私は自分の答えを編集しました。 –

答えて

0

あなたはそうです。それは簡単なはずですが、作者はこの機能を提供していませんでした。

ソース外を見て、メニュー外のクリックが検出されたときに作成者が何を行ったのかをコピーできますが、これはハックです。


あなたは幸運です。私はこのプラグインで同じことを自分でやったことがあります。

以下はやるが、それはハックだことを覚えているでしょう:

$('.contextMenu').hide(); 
+1

うん、それは私のために働いていない。メニューは、deleteTests()関数からの確認ダイアログを確認するまで、引き続き表示されます。 – Paul

+0

@Paul:確認ダイアログをポップアップする前に、そのコード行を実行していません。 –

+0

ここに私の現在のコード:\t function menu_click(key、opt){ \t $( '。contextMenu')。hide(); \t if(key == "delete"){ \t \t deleteTests(); \t} \t} – Paul

4

あなたはcontextmenu:hide

$('.context-menu-list').trigger('contextmenu:hide') 
+0

パーフェクト、私はあなたを愛しています。 –

+0

これは正解と思われます。ドキュメント:https://swisnl.github.io/jQuery-contextMenu/docs/events.html#contextmenuhide。もう1つは$( '。contextMenu')。hide()を使ってDOMに残します。 – Andrew

+0

これは正解とフラグが立てられます。 $( '。contextMenu')hide()はメニューの表示を 'hidden'にしますが、メニューはまだそこにあります! – Metafr

関連する問題