未捕获的类型错误:对象#<HTMLDivElement>没有方法'偏移'

Uncaught TypeError: Object #<HTMLDivElement> has no method 'offset'

本文关键字:lt HTMLDivElement 偏移 有方法 gt 类型 错误 对象      更新时间:2024-03-10

我正在尝试动态创建一个元素,然后获取所述元素的中心。这是我所拥有的:

function drawnode(entity, x, y) {
    var ele = ""
    ele += "<div class='relNode'>";
    ele += "<span>" + entity.name() + "</span>"
    ele += "<div>"
    var node = $(ele).appendTo('#rPaper').get(0);
    var offset = node.offset();
    var width = node.width();
    var height = node.height();
    var centerX = offset.left + width / 2;
    var centerY = offset.top + height / 2;
    node.css("top", centerY + y).css("left", centerX + x);
}

这给出错误

Object #<HTMLDivElement> has no method 'offset'

我最初在没有.get(0)的情况下尝试它,它没有给出错误,但高度和宽度都是0。

我做错了什么?

您正试图在DOM对象上调用jQuery函数,因为get给了您DOM对象而不是jQuery对象使用eq()而不是get()来获取jQuery对象

 var node = $(ele).appendTo('#rPaper').eq(0);

.get(index)返回一个dom元素引用,该引用没有jQuery提供的offset()等方法。因此,您需要使用元素的jQuery包装器来使用像.offset()/.width()这样的方法

var node = $(ele).appendTo('#rPaper');
 var node = $(ele).appendTo('#rPaper');
 var offset = node.offset();