2012-04-10 4 views
1

У меня возникла ситуация, когда у узла (Raphael rect) есть привязка к событию.Пользовательское контекстное меню в jQuery

r4.drag(dragMove, dragStart, dragStop); 

В обработчике dragStop я различая сопротивления и RightClick событий

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

я устанавливаю editLabelFlag истина в обработчике dragMove различать сопротивление и нажмите Чтобы прекратить показ контекстного меню браузера Я дал event.preventDefault().

Проблема, с которой я сталкиваюсь, заключается в том, что это происходит безупречно в первый раз и для всех последующих щелчков правой кнопкой мыши на узле я получаю только контекстное меню браузера. Я проверил в Firebug и вижу, что div contextmenu всегда остается отображенным, и только в первый раз он становится блоком отображения. Я попытался использовать return false вместо event.preventDefault, но это показывает мое меню под меню браузеров.

Это предотвращение проблемы, вызвавшей эту проблему? Укажите

+0

Это сообщение может быть полезно: http://stackoverflow.com/a/706728/239380 – keegan3d

+0

ни один из ответов или вопрос не относится к событию не обрабатывается после того, как в первый раз! То, что делает мой код, похоже на последний ответ, отправленный Саймоном – kavita

ответ

1

Это произошло не из-за того, что браузер останавливал какие-либо события, на самом деле я создавал клон и перетаскивал оригинал. В dragstart клон был помещен в оригинальное место и не удалялся во время клика. Следовательно, никакие события, сопоставленные для оригинала, обработанные для клона, и, следовательно, щелчок произошел только один раз.

Спасибо за ваше время

Смежные вопросы