jquery - 检查 droppable 是否已经包含另一个可拖动元素(jQuery UI)

标签 jquery jquery-ui html jquery-ui-draggable jquery-ui-droppable

我有一个可放置的 div 元素,当一个可拖动元素被拖离它时它会淡出。使用 out 事件可以正常工作。我遇到的问题是 droppable 上有两个可拖动元素。当我拖掉一个可放置元素时,它仍然会消失。我如何检查 droppable 上是否已经有另一个可拖动元素,以便我可以取消淡入淡出效果。我希望可放置元素仅在最后一个可拖动元素被取下时淡出。

$(".droppable-element").droppable({
    tolerance: 'touch',
    out:function(event,ui){

       /*Need to first check if there is another draggable element in the droppable before fading out.*/
            $(this).fadeOut('slow', function(){
                // Animation complete.

             });                
 }
});

最佳答案

可拖动元素是可放置元素的子元素(后代)吗?当他们被拖走时,他们会被移除吗?在这种情况下,您可以这样做:

if ( $(this).find(".draggable-element").length == 0 )
    $(this).fadeOut('slow', function(){

更新:如果我理解正确的话,您将一个元素拖到 droppable 中(也许是放下了?),然后拖了另一个元素并将其删除。在这种情况下,您可以跟踪哪些(或至少有多少)draggables 超过了您的 droppable 但没有出去。

$(".droppable-element").droppable({
    tolerance: 'touch',
    over:function(event,ui) {
        var howMany = $(this).data("howMany") || 0;
        $(this).data("howMany", howMany+1);
    },
    out:function(event,ui){
        var howMany = $(this).data("howMany") || 1;
        $(this).data("howMany", howMany-1);
        if ( howMany == 1 )
            $(this).fadeOut('slow', function(){
                // Animation complete.
            });
    }
});

关于jquery - 检查 droppable 是否已经包含另一个可拖动元素(jQuery UI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751866/

相关文章:

javascript - 如何使用cakephp中的复选框将数据保存在数据库中

javascript - 多页 jQuery 表单未提交

jquery - 如何使不透明度为 0 的元素不可点击

jquery-ui - 发送新请求时如何中止旧的自动完成请求

javascript - 向 jQuery 中的单个元素添加 css 样式

html - 获取组 KineticJS 的大小

javascript - 如何使用 JavaScript 添加/减去日期?

jquery - 在移动设备上滚动时更平滑地将元素锁定到屏幕顶部

jQuery - 如何在初始化后更改日期选择器设置

javascript - 在 d3.js 中使用 slider 和鼠标滚动进行缩放