Drag and Drop
Задача такая: есть перетаскиваемые объекты и принимающий div. Перетаскивание происходит клона, а не самого элемента и добавляется в принимающий div методом .appendTo, а как можно сделать чтоб при добавлении он не вставал в конец или в начало (другим методом), а оставался там, куда его положили. Тоесть если я перетаскиваемый элемент ложу в центр div то он там и остается, и при этом откуда я его перетаскивал должен остаться оригинал объекта.
вобще возможно ли так сделать? У меня получился вот такой замудренный код.
// перетаскивание
$('div[id*=element]').draggable({
containment: "#wraper",
revert: "invalid",
grid: [20, 20],
opacity: 0.5,
scroll: false,
zIndex: 35,
appendTo: "body",
helper: "clone",
cursor: "move",
stack: "div[id*=element] > img"
}).find('img').css({
'width': '50%',
'height': '50%'
});
//приемник
$("#contener").droppable({
accept: "#saitbar > #left > #accordion > .dropp > div[id*=element]",
activeClass: "ui-state-highlight",
drop: function (event, ui) {
var element = $(ui.draggable);
element.fadeIn(1000, function () {
$(this).clone()
.addClass("newElement")
.appendTo("#contener")
.draggable({
containment: "#contener",
opacity: 0.5,
stack: "div[id*=element]",
cursor: "move"
})
.resizable({
containment: "#contener",
/*aspectRatio:true*/
})
.find('img').animate({
'width': '100%',
'height': '100%'
}, 100)
});
|
|
к сожелению нет. Принимающий div может быть разного размера и когда в него ложат картинку она должна остоваться там куда её положили.
|
Цитата:
|
draggable droppable клонирование блоков
dmivasant,
Вариант решения ... Цитата:
-10 коррекция margin
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>demo</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<style type='text/css'>
.wrapper{margin:20px auto}
#block1,#trash{border:solid 1px #555555;margin:10px;padding:20px;-moz-border-radius:5px;-webkit-border-radius:5px;float:left;height:335px ;min-width:100px}
.textBlock{cursor: pointer;border:solid 1px #333333;font-weight:bold;margin:10px 0 5px 0;padding:10px;text-align:center;background:#eee;-moz-border-radius:3px;-webkit-border-radius:3px}
#trash{padding:0px;
width:335px;height:335px ;
background-color: #4169E1;
}
#trash div{
width:40px;height:40px ;
background-color: #DEB887;
position: absolute;
}
</style>
<script type='text/javascript'>
$(window).load(function () {
$("#block1 .textBlock").draggable({
helper: "clone",
appendTo: "#trash"
});
$("#trash").droppable({
accept: "#block1 .textBlock",
drop: function (event, ui) {
var element = $(ui.draggable).clone();
element.css({"top": $(ui.helper).offset().top - 10, "left":$(ui.helper).offset().left})
element.appendTo("#trash")
element.draggable({ containment:"#trash", scroll:false });
}
})
});
</script>
</head>
<body>
<div class="wrapper">
<div id="block1" class="">
<div class="textBlock ui-state-default">Блок 1</div>
<div class="textBlock ui-state-default">Блок 2</div>
<div class="textBlock ui-state-default">Блок 3</div>
<div class="textBlock ui-state-default">Блок 4</div>
<div class="textBlock ui-state-default">Блок 5</div>
<div class="textBlock ui-state-default">Блок 6</div>
</div>
<div id="trash" class=""></div>
</div>
</body>
</html>
|
Да ну, лучше Drag & Drop на чистом JS делать, а то юзать jQuery методы при каждом событии mousemove совсем не сахар.
|
огромное спасибо, очень помогли.
|
Почемуто в моем случаи не работает:( . я поня что нужная мне строчка .css({"top": $(ui.helper).offset().top - 10, "left":$(ui.helper).offset().left}) но она отбрасывает перетаскиваемый элемент в право и вниз пикселей на 100. Почему так происходит?
|
dmivasant,
делайте макет с вашим html и css,js. |
dmivasant,
19 строка --- укажите position: absolute новым блокам или добавьте в 32 строку |
| Часовой пояс GMT +3, время: 19:35. |