【问题标题】:Getting the left and top positions with a draggable control使用可拖动控件获取左侧和顶部位置
【发布时间】:2021-10-08 21:55:19
【问题描述】:

我的页面上有一些可拖动的组件。他们有课 可拖动的。当它被拖动并停止时,我需要获取左侧和顶部位置

        function init() {
            var p = $('#groups-parent');
            $('.draggable').draggable({
                obstacle: ".obstacle",
                preventCollision: true,
                containment: [
                    p.offset().left, p.offset().top, p.offset().left + p.width() - 225, p.offset().top + p.height() - 50
                ], 
                start: function(event, ui) {
                    $(this).removeClass('obstacle');
                },
                stop: function (event, ui) {
                    console.log(ui);
                    $('#groups-parent').css({ 'min-height': Math.max(500, ui.position.top + 50) });
                    $(this).addClass('obstacle');
                    
                    getTopLeftPosition();
                }
            });  
        }

这是我的函数,应该获取左侧和顶部的位置。

        function getTopLeftPosition(e) {
            var coordX = e.pageX - $(this).offset().left,
                coordY = e.pageY - $(this).offset().top;

            alert(coordX + ' , ' + coordY);
        }

这不起作用。我在浏览器中得到的只是这个错误消息

无法读取未定义的属性(读取“左”)

我怎样才能得到这个左侧和顶部的位置?警报应该会指出这一点。

【问题讨论】:

  • .position().offset() 不适合你吗?
  • 您还需要将event 传递给您的函数以使其工作。
  • 请问它会是什么样子? getTopLeftPosition(事件 e) ?
  • 也可以从ui.position对象中获取位置。

标签: javascript jquery


【解决方案1】:

您可能只需要通过更改将this 绑定到函数

getTopLeftPosition();

到任一

getTopLeftPosition.call(this, event);

getTopLeftPosition.bind(this)(event)

【讨论】:

  • 我实际上想要看起来像这样的位置:左:430.25,上:95.25。使用上面的代码,它给了我类似 0.5390625、20.7460375 的信息。这是正确的吗?
  • 您的解决方案有效
猜你喜欢
  • 1970-01-01
  • 2011-01-21
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 2017-08-09
  • 2012-05-02
相关资源
最近更新 更多