gpt4 book ai didi

c# - 如何保存拖动项目的位置

转载 作者:可可西里 更新时间:2023-11-01 09:15:13 24 4
gpt4 key购买 nike

嗨, 我想将掉落元素的位置保存到数据库[aspx,javascript]。用户可以删除任意数量的项目,调整大小和删除[隐藏],最后当他们点击“保存”按钮时,它应该被保存到数据库中。我有代码在 drop/stop 中执行此操作,但它会保存我只想在最后阶段保存的所有掉落项目。我想很多开发人员应该已经这样做了,所以请推荐一些代码。

  $(function() {
$('#frame img').live('mousemove', function(event) {
$('#frame img').resizable().parent().draggable();
});
});


$(function() {
$('#frame img').live('dblclick', function(event) {
// $(this).resizable("destroy") not working
$(this).hide();
//$(this).unbind("resizable"); not working
//$(this).removeclass(); not working
});
});

$(document).ready(function() {
//Counter
counter = 0;

//Make element draggable
$("img").draggable({
helper: 'clone',
containment: '#frame',

//When first dragged
stop: function(ev, ui) {
var pos = $(ui.helper).offset();
objName = "#clonediv" + counter
$(objName).css({ "left": pos.left, "top": pos.top });

$(objName).removeClass("drag");
//When an existiung object is dragged
$(objName).draggable({
containment: 'parent',
stop: function(ev, ui) {
var pos = $(ui.helper).offset();
}
});
}
});

//Make element droppable
$("#frame").droppable({

drop: function(ev, ui) {

if (ui.helper.attr('id').search(/drag[0-9]/) != -1) {
var pos = $(ui.helper).offset();

counter++;
var element = $(ui.helper).clone();

//var element = element1.resizable();
element.addClass("tempclass");
$(this).append(element);
$(".tempclass").attr("id", "clonediv" + counter);
//$(".tempclass").attr("onclick",function(){ $(this).remove(););
$("#clonediv" + counter).removeClass("tempclass");
//Get the dynamically item id
draggedNumber = ui.helper.attr('id').search(/drag([0-9])/)
itemDragged = "dragged" + RegExp.$1
//console.log(itemDragged)
//alert('left' + pos.left + ',top' + pos.top + 'of item' + itemDragged);
$("#clonediv" + counter).addClass(itemDragged);
}
}
});
//Make the element resizable


});

如有不妥请指正。提前致谢

最佳答案

假设您的元素是列表下的列表项,其 id 为 items

jQuery
var locations = [];

$('#items li').each(function(i) {

locations[i] = {
x: $(this).offset().left,
y: $(this).offset().top
};

});

然后将其发布到您的服务器端。在不知道更多细节的情况下,我不能 100% 确定这是否是全部要求。

在页面加载时,只需遍历位置并向您的 li 添加一个属性,例如(假设是 PHP)

HTML/PHP

<ul id="items">
<?php foreach($items as $item): ?>
<li style="left: <?php echo $item['x']; ?>px; top: <?php echo $item['x']; ?>px">item</li>
<?php endforeach; ?>
</ul>

当然你可能还需要做

CSS

#items {
position: relative;
}

#items li {
position: absolute;
}

关于c# - 如何保存拖动项目的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3800347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com