У меня была связанная проблема - перетаскиваемые элементы с вложенными контекстными меню не всегда были перетаскиваемыми.В моем случае перетаскиваемый элемент (элемент div, плавающий в большем содержащем элементе div) с присоединенным контекстным меню можно было перетаскивать только один раз - после завершения перетаскивания элемент больше не перетаскивался до тех пор, пока вы не щелкнули по содержащемуся div.Почти идентичные перетаскиваемые элементы без контекстных меню всегда были перетаскиваемыми.Почему щелчок контейнера восстановил перетаскиваемость, я не знаю, но это происходило последовательно.
Благодаря вашему вопросу, указывающему мне правильное направление, я посмотрел код контекстного меню и изменил его следующим образом, что решило мою проблему.проблема:
jQuery(this).mousedown( function(e) {
var evt = e;
if (e.button == 2) //Added to make this compatible with draggable
evt.stopPropagation();
jQuery(this).mouseup( function(e) {
if (e.button == 2) //Added to make this compatible with draggable
e.stopPropagation();
var srcElement = jQuery(this);
Добавление проверки для e.button == 2 останавливает распространение события щелчка правой кнопкой мыши, и теперь мои перетаскиваемые элементы div остаются перетаскиваемыми, а контекстное меню по-прежнему работает.До сих пор я проверял это только в IE8, и я не знаю, решит ли это вашу проблему, но мне интересно знать, если это так.
== EDIT ==
По предложению от Carl R для совместимости с Chrome:
jQuery(this).mousedown( function(e) {
var evt = e;
if (e.button != 2) return; //Added to make this compatible with draggable
evt.stopPropagation();
jQuery(this).mouseup( function(e) {
e.stopPropagation();
var srcElement = jQuery(this);
Я изменил режим, как он предложил, и в IE8 он отлично работает.