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