【问题标题】:Multiple drag and drop in JQuery: event after draggingJQuery中的多次拖放:拖动后的事件
【发布时间】:2010-01-24 20:06:47
【问题描述】:

我实际上正在尝试制作一个 .php 页面,其中我将有 3 个可拖动元素,这些元素必须被拖动到 3 个可放置元素 - 每个可拖动到可放置元素,并且它们是唯一的,因此每个可放置元素只接受一个某种可拖动的。

问题是我需要控制所有元素都被拖到正确的位置,在这种情况下我应该将用户重定向到success.php,否则,如果某些元素被拖到错误的droppable,用户必须去例如failure.php。

是否有例如在 PHP 中的 $_SESSION 中保存某个值以便知道所有可拖动对象都已放置在正确的位置?

这是拖放的代码:

$(function() {
    $("#draggableLeiden").draggable();
    $("#draggableTheHague").draggable();
    $("#draggableRotterdam").draggable();

    $("#droppableLeiden").droppable({
        accept: '.imgLeiden',
        drop: function(event, ui) 
        {
            $(this).addClass('ui-state-highlight');

        }
    });
    $("#droppableTheHague").droppable({
        accept: '.imgTheHague',
        drop: function(event, ui) 
        {
            $(this).addClass('ui-state-highlight');

        }
    });
    $("#droppableRotterdam").droppable({
        accept: '.imgRotterdam',
        drop: function() 
        {
            $(this).addClass('ui-state-highlight');
            //var activeClass = $(this).droppable('option', 'activeClass','ui-state-highlight');
        }
    });
});

我正在尝试这样做,例如获取可放置元素的活动类以查看它是否与“ui-state-highlight”匹配,但实际上,每次重新加载页面时都会执行该标签,所以如果我尝试将任何代码插入
删除:函数() 它会一直执行。

提前非常感谢!

【问题讨论】:

  • 我正在研究解决方案。等我回家再发。

标签: javascript jquery drag-and-drop draggable droppable


【解决方案1】:

请改用revert 选项。当一个可拖动元素被放置在除了接受的可放置元素之外的任何东西上时,它会滑回原来的位置。这对你有用吗?

【讨论】:

  • 不完全是,因为用户不应该使用试错法,所以最好是根据用户采取的操作将用户发送到另一个页面。不过还是非常感谢您的帮助!
【解决方案2】:

您是否偶然在寻找 ui.draggable 它包含已删除的元素?

http://jqueryui.com/demos/droppable/

$('#target').droppable({
    drop : function(event,ui){
            if($(ui.draggable).attr('id') == "correcttarget")
            {
                    window.location = "yay.php";
            }
            else
            {
                    window.location = "awwww.php";
            }
    }
})

【讨论】:

  • 是的,这可能行得通!但是当三个可拖动对象被拖放到其右侧的可拖放对象时,如何使其转到某个网页?
  • @noloman 保留一个全局变量,一个条件数组或一个检查是否有 3 次成功的简单计数器,将其添加到 correcttarget 分支 counter++;if(counter==3){ /* action here */}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多