1

こんにちは私はいくつかの問題を抱えています:http: //jsfiddle.net/fNgXX/4/

欲しいもの:ユーザーが単語をダブルクリックすると、テキストに応じて、異なるコンテキストメニューが表示されます。ここでの最初のバグ:

$('word').click( function(e) {

ダブルクリックで機能させるには、.clicktoを使用する必要がありました。理由はわかりません。dblclickを置くと、contextMenuを表示するために4回クリックする必要があります。

2番目の問題(より重要):ダブルクリックすると:

<word>test</word>

EditでcontextMenuが表示されます。しかし、その後、notestをクリックすると、contextMenu Cutが表示されるはずですが、表示されませんでしたが、それでも前のcontextMenuが表示されます。

だから私の質問は、conextMenuをリセットする方法ですか?

4

1 に答える 1

1

2 つの問題がありました。最初に実際に作成するcontextMenu に作成する関数を呼び出していたため、最初は何度もクリックする必要がありました (正常に.dblclick()機能するように配置した場合)。また、あなたが抱えていたもう1つの問題は、のitemsオプションを実際にオーバーライドしていなかったことです。すでに存在していたcontextMenuため、それを表示するだけで、既存のオプションをオーバーライドしていないため、関数を次のように変更しました。contextMenuword.contextMenu()changeWord

changeWord = function(word){
    var item={};
    if (word.text() == 'test') {
        item['edit']={name: "Edit", icon: "edit"};
    } else {
        item['cut']= {name: "Cut", icon: "cut"} 
    }
    console.log(item);
    $.contextMenu( 'destroy', 'word' );
    $.contextMenu({
        selector: 'word',
        trigger: 'none',
        items: item
    }); 
    word.contextMenu();
}

そして、それは期待どおりに機能します。この更新されたフィドルで確認できます...

于 2013-03-11T20:25:31.213 に答える