jQuery可放置鼠标悬停传播

时间:2012-01-25 20:29:03

标签: jquery jquery-ui drag-and-drop draggable jquery-ui-draggable

我有两个Div,它们都被定义为可投放项目并且可以接受相同的项目。 两个Div的位置都是绝对的,有时它们可​​以相互叠加,在这种情况下,当我将一个元素拖到顶部Div上时,似乎隐藏的Div接受掉落。

我试图在Div鼠标悬停,mouseleave,droppable.over事件中放置event.stopPropagation(),但它什么也没做。

相关代码是:

$('.myDraggable').draggable({
    start: function (event, ui) { },
    distance: 20,
    revert: 'invalid',
    appendTo: '.myStage',
    scroll: false,
    helper: 'clone',
    zIndex: 999999
});

$('.myDroppable').droppable({
    over: function (event, ui) { },
    drop: function (event, ui) { },
    activate: function (event, ui) { },
    deactivate: function (event, ui) { },
    accept: '.myDraggable'
});

1 个答案:

答案 0 :(得分:0)

我可以针对您的问题提出一些解决方法。使用“live”或“delegate”将鼠标悬停在元素上时,可以使元素可拖动。下面的代码不是D& D,但您可以通过替换添加css类并使对象可拖动来轻松地将其移植到您的项目中。

   <div id='mouse-over-wrapper'>
    <div id='div1' style="position:absolute; width:500px; height:500px; top:100px; left:50px; z-index:100;">
    </div>
    <div id='div2' style="position:absolute; width:500px; height:500px; top:300px; left:250px; z-index:100;">
    </div>
</div>
<script type="text/javascript">
    $(document).ready(function () {
        $('#mouse-over-wrapper div').live('mouseover', function () {
            $(this).addClass('blue');
        });
        $('#mouse-over-wrapper div').live('mouseout', function () {
            $(this).removeClass('blue');
        });
    });
</script>