【问题标题】:jQuery drag and drop with sortable带有可排序的jQuery拖放
【发布时间】:2013-01-11 01:49:09
【问题描述】:

我在尝试使用某些拖放元素上的可排序从 JS 中获取数组时遇到问题。 可以在以下位置找到工作演示:

Example

我需要达到的目标:

  1. 在图像上拖动项目,获取 x,y(完成)
  2. 所有项目都放置好后,使用jQuery sortable?获取具有 x,y 坐标的 id 数组。

array(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 将值写入数据库以便稍后调用。

提前致谢

【问题讨论】:

    标签: javascript jquery arrays drag-and-drop jquery-ui-sortable


    【解决方案1】:

    简单的解决方案:

    1. 在它们自己的“drop”事件中为这些元素添加一个类,然后让所有这些元素都有一个选择器。

    2. 之后,方便的$.fn.each()$.fn.offset() 会有所帮助。

    3. 然后您可以使用topleft 而不是您提到的xposypos 处理这些坐标。

    这是一个例子:

    var coordinates = {};
    
    $(".dropped").each(function(item) {
        coordinates[$(item).attr("id")] = $(item).offset();
    });
    

    【讨论】:

    • 我在 drop 事件中添加了 addclass,可以。我在链接上附加了一个 get coords 函数来运行该函数,但我在 console.log 中未定义...代码在上面的示例链接中。
    • 我最终做了以下事情:
    • var obj = { id : $(this).attr("id"), x : xPos, y : yPos }; arr.push(obj); });
    猜你喜欢
    • 2019-07-27
    • 1970-01-01
    • 2011-11-02
    • 2015-09-01
    • 2013-12-14
    • 2014-08-31
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多