我在尝试使用某些拖放元素上的sortable从JS中获取数组时遇到问题。 可以在以下位置找到工作演示:
我需要实现的目标:
阵列(23456-> {XPOS:234,ypos:234},23456-> {XPOS:234,ypos:234},....等
我不确定如何将sortable绑定到仅放在图像上的项目,然后将这些值绑定到数组中
以下是目前的代码:
jQuery(function($){
$('.dragThis').bind('click', function(){
$(this).css("border","3px solid #fff");
$(this).draggable({
containment: $('body'),
drag: function(){
$('#dropHere').droppable({
accept: '.dragThis',
over : function(){
$(this).animate({'border-width' : '3px', 'border-color' : '#0f0'}, 500);
}
});
},
stop: function(){
var position = $(this).position();
var parentPos = $('#dropHere').offset();
var xPos = position.left - parentPos.left;
var yPos = position.top - parentPos.top;
var finalOffset = $(this).position();
var finalxPos = xPos;
var finalyPos = yPos;
$('#finalX').text('Final X: ' + finalxPos);
$('#finalY').text('Final Y: ' + finalyPos);
//$('.dragThis').sortable();
console.log (finalxPos,finalyPos,$(this).attr("id"));
},
revert: 'invalid'
//connectToSortable: '#dropHere'
});
});
});
任何帮助指向正确的方向,非常感谢。 为了澄清,我将通过AJAX将值写入数据库,以便稍后召回。
提前致谢
答案 0 :(得分:1)
简单的解决方案:
在他们自己的'drop'事件中为这些元素添加一个类,然后让所有这些元素都有一个带选择器的类。
之后,方便的$.fn.each()
和$.fn.offset()
会有所帮助。
然后,您可以使用top
,left
代替您提及的xpos
,ypos
来处理这些坐标。
以下是一个例子:
var coordinates = {};
$(".dropped").each(function(item) {
coordinates[$(item).attr("id")] = $(item).offset();
});