Javascript 如何进行多个jQuery UI拖放?

Javascript 如何进行多个jQuery UI拖放?,javascript,jquery,jquery-ui,drag-and-drop,Javascript,Jquery,Jquery Ui,Drag And Drop,提前感谢您抽出时间来看我的问题 使用jQuery和jqueryui,我一直在尝试将诸如绷带、石膏和水坑之类的元素拖到棍子人的各个元素上。例如,如果将绷带放在他的左臂上,左臂的背景图像将变为有绷带 有一次,我的代码可以拖放您选择的第一个项目——这是一个开始。现在,我已经丢失了它,它只是在执行jQuery列表中的最后一个元素,在本例中,它将一滩水拖到了stick man的元素上 我已经试着纠正了好几个小时了,但解决不了这个问题 如果有人能帮忙,我们将不胜感激 $(document).ready(fu

提前感谢您抽出时间来看我的问题

使用jQuery和jqueryui,我一直在尝试将诸如绷带、石膏和水坑之类的元素拖到棍子人的各个元素上。例如,如果将绷带放在他的左臂上,左臂的背景图像将变为有绷带

有一次,我的代码可以拖放您选择的第一个项目——这是一个开始。现在,我已经丢失了它,它只是在执行jQuery列表中的最后一个元素,在本例中,它将一滩水拖到了stick man的元素上

我已经试着纠正了好几个小时了,但解决不了这个问题

如果有人能帮忙,我们将不胜感激

$(document).ready(function () {
  //Drag bandage
  $(".draggableBandage").draggable({ containment: ".scenarioSec", cursor: "pointer", helper: "clone" });
  //Drop bandage on right arm 
  $("#droppableRightArm").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpRightArmBandage")
    }
  });
  //Drop bandage on right leg
  $("#droppableRightLeg").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpRightLegBandage")
    }
  });
  //Drop bandage on head
  $("#droppableHead").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpHeadBandage")
    }
  });
  //Drop bandage on left arm
  $("#droppableLeftArm").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpLeftArmBandage")
    }
  });
  //Drop bandage on left leg
  $("#droppableLeftLeg").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpLeftLegBandage")
    }
  });
});
$(document).ready(function () {
  //Drag plaster 
  $(".draggablePlaster").draggable({ containment: ".scenarioSec", cursor: "pointer", helper: "clone" });
  //Drop plaster on right arm
  $("#droppableRightArm").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpRightArmPlaster")
    }
  });
  //Drop plaster on right leg
  $("#droppableRightLeg").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpRightLegPlaster")
    }
  });
  //Drop plaster on head
  $("#droppableHead").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpHeadPlaster")
    }
  });
  //Drop plaster on left arm
  $("#droppableLeftArm").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpLeftArmPlaster")
    }
  });
  //Drop plaster on left leg
  $("#droppableLeftLeg").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpLeftLegPlaster")
    }
  });
});
$(document).ready(function () {
  //Drag water
  $(".draggableWater").draggable({ containment: ".scenarioSec", cursor: "pointer", helper: "clone" });
  //Drop water on right arm
  $("#droppableRightArm").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpRightArmWater")
    }
  });
  //Drop water on right leg
  $("#droppableRightLeg").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpRightLegWater")
    }
  });
  //Drop water on head
  $("#droppableHead").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpHeadWater")
    }
  });
  //Drop water on left arm
  $("#droppableLeftArm").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpLeftArmWater")
    }
  });
  //Drop water on left leg
  $("#droppableLeftLeg").droppable({
    drop: function (event, ui) {
      $(this).addClass("rpLeftLegWater")
    }
  });
});

好的,所以每次附加一个新的可拖放事件处理程序时,它都会覆盖上一个事件处理程序,因此最后一个事件处理程序是唯一有效的

因此,我建议您处理要删除的对象的类型,并且每个肢体有一个事件处理程序

我发现删除了哪些项的方法是使用标记中的
data-
属性,然后在删除的事件中将它们取出

这意味着您可以编写非常通用的代码,通过将对象类型附加到类名来动态应用适当的css样式

<div class="draggableObject bandage" data-object="Bandage"></div>
<div class="draggableObject plaster" data-object="Plaster"></div>

在这种情况下,最好以“谢谢”为例!现在工作非常好:)@lauw0203-没问题!记住,如果答案对你有效,请使用答案上上下箭头旁边的绿色复选框接受答案。
$(document).ready(function() {
    $('.draggableObject').draggable();

    $('.droppableRightArm').droppable({
        drop: function(event, ui) {
            var $this = $(this); // reuse JQuery object.
            var droppedObject = ui.draggable.data('object'); // get object type
            // css reset
            $this.removeClass();
            $this.addClass("rpRightArm" + droppedObject);
            //
        }
    });
});​