gwt-query - 嵌套可拖动传播

标签 gwt draggable event-propagation gwtquery

我编写了以下代码:

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);

当我开始拖动内部元素时,我的问题就开始了,然后draggable(childDraggable的父级)也开始拖动(仅在IE8中,我猜,在以前的版本中)。我想防止这种事件传播,即我想拖动innerElement而不拖动其父级。

我尝试过 stopPropagationpreventDefault 但效果不佳。如有帮助,将不胜感激。

提前致谢。

最佳答案

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;
    }
}

关于gwt-query - 嵌套可拖动传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950665/

相关文章:

java - GWT 表示层 : Who does what?

java - 如何在 GWT RPC 中捕获 AJAX beforeSend 事件

java - 如何在GWT CellTree中选择父节点时选择所有子节点?

angular - 停止鼠标事件传播

javascript - event.stopPropagation() 在 jQuery 事件处理程序中不起作用

java - 如何连接 GWT 超链接点击处理程序?

JqueryUI Draggable 无法在 IE 中工作?

JQuery 可拖动 - 无重叠

jquery - float 可拖动框在调整大小时消失

actionscript-3 - 事件冒泡和停止传播