【问题标题】:how to set the start position of jquery UI draggable如何设置jquery UI可拖动的起始位置
【发布时间】:2011-10-25 08:25:06
【问题描述】:

我正在使用 jQuery UI 和 isotope,isotope 对元素的定位做了很多事情,并且弄乱了拖动元素的起始位置。

当我开始拖动时,我试图拖动的元素显示在父元素的左上角,而不是光标下方。

我查看了“开始”函数,并从事件中获得了正确的 x,y 坐标,但我似乎无法将这些值应用于克隆的可拖动项目。

我的代码是这样的

jQuery('div.item').draggable({ 助手:函数(事件,用户界面){ jQuery('div.hold_items').isotope('destroy'); var item_dragged = jQuery(this).clone().appendTo('body').css({'z-index':500,'top':event.clientY, 'left':event.clientX}); 开始同位素(); 返回配方_拖动; } });

我必须执行开始/停止同位素来解决同位素破坏可丢弃功能并且物品不知道它们被丢弃在哪里的问题。

我确定有一种方法可以设置可拖动的起始位置,但我似乎无法在文档中找到它,只是一种开始的方法。

【问题讨论】:

  • 你能解决这个问题吗?我遇到了类似的问题,Isotope draggable 似乎很有趣。可拖动元素的起点很远。

标签: jquery jquery-ui jquery-ui-draggable


【解决方案1】:

发布我的答案是因为我在其他任何地方都找不到答案- 我遇到了您描述的问题,我以这种方式解决了它.. 定位助手(它将尝试重置为 0,0) 然后我们在它重置为 0,0 之前返回 false 它被取消并且在正确的位置,但是我们通过复制用于启动拖动的事件来重新开始拖动。

$(" #container").droppable({
drop: function (event, ui) {
    $(ui.draggable).detach().css({
        top: 0,
        left: 0
    }).appendTo(this);

}
});

$(" #draggable").draggable({
start: function (event, ui) {
    if ($(event.target).parent().is('.ui-droppable')) {
        var x = ($(this).offset().left);
        var y = ($(this).offset().top);
        var p = $(event.target).parent().parent();
        $(event.target).detach().insertAfter(p);
        $(ui.helper).css({
            'left': x - $(event.target).offset().left,
            'top': y - $(event.target).offset().top
        });
        var eventCopy = document.createEvent("MouseEvents");
        eventCopy.initMouseEvent(event.type, event.bubbles, event.cancelable, event.view, event.detail,
        event.pageX || event.layerX, event.pageY || event.layerY, event.clientX, event.clientY, event.ctrlKey, event.altKey,
        event.shiftKey, event.metaKey, event.button, event.relatedTarget);
        ui.dispatchEvent(eventCopy);
        return false;
    }
}
});

【讨论】:

  • 实际上.. 我想这不像我说的那样有效。它只是打破了开始事件而不返回任何东西。由于某种原因,它仍然拖动并具有正确的位置,因为它是在结束开始事件之前设置的。如果事件返​​回false,它会恢复到错误的位置,所以你只需要调用一个异常就可以了。
【解决方案2】:

对于 jquery,您可以尝试使用 event.pageX 和 event.pageY 解释 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多