恢复拖放位置



我在代码中使用拖放jquery ui。代码运行良好。但用户应该有一定的能力编辑保存后的数据。这意味着当用户再次打开页面时,我需要恢复拖放位置。我试着使用触发器,但我不能模仿"drop-ui"。我该怎么做?

$( ".draggable-children-username" ).draggable({
    snap: ".draggable-in-box",
    opacity: 0.7,
    revert: 'invalid',
    helper: "clone"
});
$(".draggable-in-box").droppable({
    accept: $(".draggable-children-username"),
    hoverClass: "dropHover",
    drop: function (ev, ui) {
        $(this).trigger("DopeEvent", ui);
    }
});
$( ".draggable-in-box" ).bind("DopeEvent", function(event, ui ){
    console.log(ui);
    var me = ui.draggable.clone()
    ui.draggable.draggable("disable")
    me.appendTo(this)
    .addClass("newClass");
    me.draggable({
        accept: ".draggable-in-box",
        revert: function(valid) {
            if(!valid) {
                this.remove();
                $(".dr-children-id-"+this.attr("data-id")).draggable("enable");
            }
        }
    });
});
$( ".draggable-in-box" ).trigger("DopeEvent", $( ".dr-children-id-140" ));

当前错误:未捕获类型错误:ui.draggable.clone不是函数

http://jsfiddle.net/vjGY4/123/

一些修复。我认为你正在尝试做的工作示例:

http://jsfiddle.net/Twisty/vjGY4/125/

JQuery

$(".draggable-children-username").draggable({
  snap: ".draggable-in-box",
  opacity: 0.7,
  revert: 'invalid',
  helper: "clone"
});
$(".draggable-in-box").droppable({
  accept: $(".draggable-children-username"),
  hoverClass: "dropHover",
  drop: function(ev, ui) {
    $(this).trigger("DopeEvent", ui.draggable);
  }
});
$(".draggable-in-box").bind("DopeEvent", function(event, ui) {
  console.log(ui);
  var me = $(ui).clone();
  //ui.draggable.draggable("disable")
  me.appendTo(this)
    .addClass("newClass");
  me.draggable({
    accept: ".draggable-in-box",
    revert: function(valid) {
      if (!valid) {
        this.remove();
        $(".dr-children-id-" + this.attr("data-id")).draggable("enable");
      }
    }
  });
});
$(".draggable-in-box").trigger("DopeEvent", $(".dr-children-id-140"));
  1. 不要假设DopeEvent中传递了一个可拖动对象或jquery对象。使用var me = $(ui).clone();
  2. 在您的drop中,您需要像这样传递元素:$(this).trigger("DopeEvent", ui.draggable);

希望能有所帮助。您可以通过检查正在通过的内容来改进您的活动。像if(typeof ui === "object"){}这样的东西可以工作。

最新更新