2013-06-05 4 views
3

Я написал следующий код:GWT-запрос - вложенное перетаскиваемым распространение

HorizontalPanel draggable = new HorizontalPanel(); 
Function startDragParent = new Function() { 
    @Override 
    public boolean f (Event e) { 
    // some code here... 
    return false; 
} 
}; 
Function dragParent = new Function() { 
    @Override 
    public boolean f (Event e) { 
    // some code here... 
    return false; 
} 
}; 
Function stopDragParent = new Function() { 
    @Override 
    public boolean f (Event e) { 
    // some code here... 
    return false; 
} 
}; 
$(draggable).as(Ui).draggable() 
    .bind(Draggable.Event.start, startDragParent); 
    .bind(Draggable.Event.drag, dragParent); 
    .bind(Draggable.Event.stop, stopDragParent); 

HorizontalPanel childDraggable = new HorizontalPanel(); 
Function dragChild = new Function() { 
    @Override 
    public boolean f (Event e) { 
    // some code here... 
    return false; 
} 
}; 
$(childDraggable).as(Ui).draggable().bind(Draggable.Event.drag, dragChild); 

// finally I add one element inside another 
draggable.add(childDraggable); 

Моих проблемы начинаются, когда я начинаю перетаскивание внутреннего элемента вокруг, а затем перетаскивать (родитель childDraggable) перетаскивайте тоже (только в IE8 и, я думаю, в предыдущих версиях). Я бы хотел предотвратить такое распространение событий, то есть я хотел бы перетащить innerElement, не перетаскивая его родительский элемент.

Я tryied stopPropagation и preventDefault но это не было хорошо. Помощь была бы оценена.

Заранее спасибо.

+1

, какие версии GWT, gwtquery и GWT-перетаскиваемым вы используете? –

+1

Я использую 2.4 для GWT, gwt-query 1.1.0 и выпускаю 146 gwt-query-ui. Но я боюсь, что изменение версий не будет вариантом. Я думаю, это может быть что-то касающееся использования jquery в IE8, но это всего лишь чувство. –

+1

Ах, я думал, вы используете gwtquery + gwtquery-dnd (оба написаны в java и не нуждаются в внешних js). Ваша настройка довольно сложна, так как Gwtquery-ui является оболочкой для jquery-ui.js, которая также нуждается в jquery.js. К сожалению, я не могу помочь, так как я не использую этот плагин. Возможно, вы можете получить некоторую помощь из списков jsquery-ui. –

ответ

0

stopPropagation не работает в IE, вы должны использовать что-то вроде cancelBubble следующим образом:

function stop(e) { 
    // feature check (in IE this will be undefined) 
    if (e.stopPropagation) { 
     // standards compliant browser 
     e.stopPropagation(); 
    } else { 
     // dreadful IE 
     e.cancelBubble = true; 
    } 
}