2016-05-30 40 views
1

我不擅长jquery ..我想改变droppable图像,当我拖放内droppable ..我该如何改变它?我需要可投放的图像在可拖动的盒子内放置时进行更改。请帮忙!更改dropplable图像时,丢弃里面

的jsfiddle

https://jsfiddle.net/xInfinityMing/9vmw4mtc/6/ 

HTML:

<div id="dragIcons"> 
    <img width="100px" height="100px" src="assets/img/gebiz.png"> 
    <img width="100px" height="100px" src="assets/img/b2b.png"> 
    <img width="100px" height="100px" src="assets/img/pitches.png"> 
    <img width="100px" height="100px" src="assets/img/creative.png"> 
</div> 
<div id="briefcase"> 
    <div id="briefcase-droppable"> 
    </div> 
</div> 

CSS:

.draggable 
{ 
    filter: alpha(opacity=100); 
    opacity: 1.0; 
    z-index: 100; 
    transition: none !important; 
    animation: pulse 0.4s alternate infinite; 
} 
.end-draggable 
{ 
    animation: 0; 
} 
.dropped 
{ 
    position: static !important; 
    transition: none !important; 
    animation: 0; 
} 
#dragIcons 
{ 
    padding: 5px; 
    min-height: 100px; 
    width: 500px; 
    margin-left: auto; 
    margin-right: auto; 
} 
#briefcase 
{ 
    height: 485px; 
    width: 600px; 
    margin-left: 300px; 
    background: url("../../../assets/img/folder.png"); 
    background-position: 
    background-repeat: no-repeat; 
    position: absolute; 
} 
#briefcase-open 
{ 
    height: 485px; 
    width: 600px; 
    margin-left: 300px; 
    background: url("../../../assets/img/folder-open.png"); 
    background-position: 
    background-repeat: no-repeat; 
    position: absolute; 
} 
#briefcase-droppable 
{ 
    border-style: solid; 
    height: 285px; 
    width: 450px; 
    margin-left: 80px; 
    margin-top: 110px; 
} 
@keyframes pulse { 
    100% { 
    transform: scale(1.1); 
    } 
} 

** JS:**

$(function() { 
$("#dragIcons img").draggable({ 
    revert: "invalid", 
    refreshPositions: true, 
    drag: function (event, ui) { 
     ui.helper.removeClass("end-draggable"); 
     ui.helper.addClass("draggable"); 
    }, 
    stop: function (event, ui) { 
     ui.helper.addClass("end-draggable"); 
     ui.helper.removeClass("draggable"); 
    } 
}); 
$("#briefcase-droppable").droppable({ 
    drop: function (event, ui) { 
     if ($("#briefcase").length == 0) { 
      $("#briefcase-droppable").html(""); 
     } 
     ui.draggable.addClass("dropped"); 
     $("#briefcase-droppable").append(ui.draggable); 
    } 
    }); 
}); 

回答

1

你可以做到这一点在drop event,你可以得到这样ui.draggable可拖动元素,从而改变例如图像源,你应该做

ui.draggable.attr('src','Your new source Here'); 

演示:https://jsfiddle.net/9vmw4mtc/8/

JS:

$(function() { 
    $("#dragIcons img").draggable({ 
    revert: "invalid", 
    refreshPositions: true, 
    drag: function(event, ui) { 
     ui.helper.removeClass("end-draggable"); 
     ui.helper.addClass("draggable"); 
    }, 
    stop: function(event, ui) { 
     ui.helper.addClass("end-draggable"); 
     ui.helper.removeClass("draggable"); 
    } 
    }); 
    $("#briefcase-droppable").droppable({ 
    drop: function(event, ui) { 
     ui.draggable.attr('src','https://image.freepik.com/free-icon/double-up-arrow-angles_318-53141.png'); 
     if ($("#briefcase").length == 0) { 
     $("#briefcase-droppable").html(""); 
     } 
     ui.draggable.addClass("dropped"); 
     $("#briefcase-droppable").append(ui.draggable); 
    } 
    }); 
}); 

更新:

如果你想改变的droppable element也将使其在drop事件的background image但你会使用$(this)

$(this).parent().css('background-image','your new background here'); 

更新演示得到droppable elementhttps://jsfiddle.net/9vmw4mtc/9/

$(function() { 
    $("#dragIcons img").draggable({ 
    revert: "invalid", 
    refreshPositions: true, 
    drag: function(event, ui) { 
     ui.helper.removeClass("end-draggable"); 
     ui.helper.addClass("draggable"); 
    }, 
    stop: function(event, ui) { 
     ui.helper.addClass("end-draggable"); 
     ui.helper.removeClass("draggable"); 
    } 
    }); 
    $("#briefcase-droppable").droppable({ 
    drop: function(event, ui) { 
     $(this).parent().css('background-image','url("http://icons.iconarchive.com/icons/dtafalonso/yosemite-flat/512/Folder-icon.png")'); 
     if ($("#briefcase").length == 0) { 
     $("#briefcase-droppable").html(""); 
     } 
     ui.draggable.addClass("dropped"); 
     $("#briefcase-droppable").append(ui.draggable); 
    } 
    }); 
}); 
+0

感谢您的答复,但我想改变是可丢弃的图像。该文件夹放置在可拖放内部时。我不希望改变可拖动的图像... –

+0

@YiMing看着小提琴 - 这正是你正在寻找的东西,从你的反应来看,你似乎不知道如何拖放工作。接受答案。我给它一个upvote。 –

+0

@YiMing我更新了答案并添加了另一个更改可放置元素背景的演示。检查此:https://jsfiddle.net/9vmw4mtc/9/ –