2012-04-10 28 views
1

我有一種情況,其中一個節點(拉斐爾矩形)附加了事件拖動。jquery中的自定義上下文菜單

r4.drag(dragMove, dragStart, dragStop); 

在dragStop處理我拖右擊事件

if (editLabelFlag == false) { 
    if (event.which == 3) { 
     event.preventDefault(); 
     $('#contextmenu').slideDown('fast').delay(1000).slideUp(); 
     // code for 
    } 
} else { 
    // drag code 
} 

我設置的editLabelFlag爲true在dragMove處理器和拖動來區分點擊 要停止顯示瀏覽器的右鍵菜單之間的區別我給了event.preventDefault()。

我面臨的問題是,這是第一次完美無瑕地發生,所有稍後右鍵單擊節點時,我只能得到瀏覽器上下文菜單。我檢查了Firebug,發現contextmenu div總是保持不顯示,只有第一次變成顯示模塊。我試過使用return false而不是event.preventDefault,但是在瀏覽器菜單下面顯示我的菜單。

是否導致此問題的preventDefault? 請提供一些

+0

此信息可能是有用的:http://stackoverflow.com/a/706728/239380 – keegan3d 2012-04-10 08:18:27

+0

沒有一個答案或問題,指的是在第一時間之後沒有被處理的事件!我的代碼的功能與Simon發佈的最後一個答案類似 – kavita 2012-04-10 08:37:46

回答

1

這不是由於瀏覽器停止任何事件,實際上我正在創建一個克隆並拖動原件。在dragstart中,克隆被放置在原始位置,在點擊過程中不會被移除。因此,沒有爲原始映射的事件用於克隆,因此點擊只發生一次。

感謝您的時間