jQuery可拖放和可滚动的div

前端之家收集整理的这篇文章主要介绍了jQuery可拖放和可滚动的div前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对 jQuery UI的可卸载组件有一个小问题,但是由于我的代码或组件中的错误,我是否确定是否有问题.

我有一个宽度和高度固定的div.该div的overflow-x设置为hidden,overflow-y设置为auto.
在那个div里面我有更多的div.这么多的外部div开始滚动.每个内部div都是一个可下载的,接受一个在包装器div之外的draggable.

如果我拖&将draggable项目放在包装器中的某处,一切正常.问题是如果我将元素放在包装器div的下面,那么drop事件会被触发.

我不太善于解释问题;因此这里有一些代码重现问题:

http://jsfiddle.net/2p56Y/

只需拖放“拖我!”容器下面的div与滚动条.意外的是,您会看到警报“丢弃”.

现在有趣的是:如果您向下滚动到“Test28”项目,现在您将draggable拖放到包装器下方,则drop事件不会被触发.看起来隐藏的元素仍然可以访问,当你放下他们的东西.

那么,这是一个错误,还是需要以不同的方式写我的代码来使其工作? (或两者? :-) )

解决方法

检查droppable元素对父容器的限制,如果droppable的底部位于父级顶部或droppable的顶部位于父级底部之下,则会破坏函数的执行:
$('.item').droppable( {
    activeClass: "ui-state-default",hoverClass: "ui-state-hover",accept: "#draggable",drop: function( event,ui ) {
        var cTop = $(this).closest(".Box").position().top + parseInt($(this).closest(".Box").css("margin-top"));
        var cBtm = $(this).closest(".Box").position().top + parseInt($(this).closest(".Box").css("margin-top")) + $(this).closest(".Box").height();
        var dTop = $(this).position().top + parseInt($(this).css("margin-top"));
        var dBtm = $(this).position().top + parseInt($(this).css("margin-top")) + $(this).height()

        if (dBtm > cTop && dTop < cBtm) {
            alert("Dropped.");
        }
    }
});

示例:http://jsfiddle.net/lthibodeaux/2p56Y/6/

我意识到它不优雅,但似乎可行.我承认只是粗略地测试这个脚本.

原文链接:/jquery/176783.html

猜你在找的jQuery相关文章