使用 jquery 将一个元素拖入框中并同时删除另一个元素
Drag one elemt intobox and remove another on same time using jquery
我有问题 jQuery
我想将一张图片拖放到一个框中我有 4 张图片,但如果我们将另一张图片添加到框中,我只想将一张图片拖放到框中,第一张图片回到原始位置
我想要使用 jQuery 拖放功能。
[
jQuery(".draggable").draggable({
恢复:函数(删除){
var draggable = jQuery(this),
hasBeenDroppedBefore = draggable.data('hasBeenDropped'),
wasJustDropped = dropped && dropped[0].id == "stage-a";
if(wasJustDropped) {
// don't revert, it's in the droppable
return false;
} ]
好的,你可以试试这个,我使用 jQuery 版本 1.8.3 & jquery-ui 1.9.1 测试了这个
HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swap elements</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
<style>
.droppable {
float: left;
margin-left: 100px;
width: 200px;
height: 50px;
border: 1px solid red;
padding: 5px;
}
.draggable {
width: 200px;
height: 50px;
background: yellow;
text-align: center;
line-height: 50px;
}
.ui-draggable-dragging {
background: blue;
}
.hoverClass {
border: 2px solid red;
}
</style>
</head>
<body>
<div class='droppable'>
<div class="draggable">Draggable 1</div>
</div>
<div class='droppable'>
<div class="draggable">Draggable 2</div>
</div>
</body>
</html>
JAVASCRIPT
$(document).ready(function () {
window.startPos = window.endPos = {};
makeDraggable();
$('.droppable').droppable({
hoverClass: 'hoverClass',
drop: function(event, ui) {
var $from = $(ui.draggable),
$fromParent = $from.parent(),
$to = $(this).children(),
$toParent = $(this);
window.endPos = $to.offset();
swap($from, $from.offset(), window.endPos, 200);
swap($to, window.endPos, window.startPos, 1000, function() {
$toParent.html($from.css({position: 'relative', left: '', top: '', 'z-index': ''}));
$fromParent.html($to.css({position: 'relative', left: '', top: '', 'z-index': ''}));
makeDraggable();
});
}
});
function makeDraggable() {
$('.draggable').draggable({
zIndex: 99999,
revert: 'invalid',
start: function(event, ui) {
window.startPos = $(this).offset();
}
});
}
function swap($el, fromPos, toPos, duration, callback) {
$el.css('position', 'absolute')
.css(fromPos)
.animate(toPos, duration, function() {
if (callback) callback();
});
}
});
希望这对您有所帮助。
我有问题 jQuery
我想将一张图片拖放到一个框中我有 4 张图片,但如果我们将另一张图片添加到框中,我只想将一张图片拖放到框中,第一张图片回到原始位置 我想要使用 jQuery 拖放功能。
[
jQuery(".draggable").draggable({ 恢复:函数(删除){
var draggable = jQuery(this),
hasBeenDroppedBefore = draggable.data('hasBeenDropped'),
wasJustDropped = dropped && dropped[0].id == "stage-a";
if(wasJustDropped) {
// don't revert, it's in the droppable
return false;
} ]
好的,你可以试试这个,我使用 jQuery 版本 1.8.3 & jquery-ui 1.9.1 测试了这个
HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swap elements</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
<style>
.droppable {
float: left;
margin-left: 100px;
width: 200px;
height: 50px;
border: 1px solid red;
padding: 5px;
}
.draggable {
width: 200px;
height: 50px;
background: yellow;
text-align: center;
line-height: 50px;
}
.ui-draggable-dragging {
background: blue;
}
.hoverClass {
border: 2px solid red;
}
</style>
</head>
<body>
<div class='droppable'>
<div class="draggable">Draggable 1</div>
</div>
<div class='droppable'>
<div class="draggable">Draggable 2</div>
</div>
</body>
</html>
JAVASCRIPT
$(document).ready(function () {
window.startPos = window.endPos = {};
makeDraggable();
$('.droppable').droppable({
hoverClass: 'hoverClass',
drop: function(event, ui) {
var $from = $(ui.draggable),
$fromParent = $from.parent(),
$to = $(this).children(),
$toParent = $(this);
window.endPos = $to.offset();
swap($from, $from.offset(), window.endPos, 200);
swap($to, window.endPos, window.startPos, 1000, function() {
$toParent.html($from.css({position: 'relative', left: '', top: '', 'z-index': ''}));
$fromParent.html($to.css({position: 'relative', left: '', top: '', 'z-index': ''}));
makeDraggable();
});
}
});
function makeDraggable() {
$('.draggable').draggable({
zIndex: 99999,
revert: 'invalid',
start: function(event, ui) {
window.startPos = $(this).offset();
}
});
}
function swap($el, fromPos, toPos, duration, callback) {
$el.css('position', 'absolute')
.css(fromPos)
.animate(toPos, duration, function() {
if (callback) callback();
});
}
});
希望这对您有所帮助。