未捕获的TypeError:对象#<htmldivelement>没有方法'offset'</htmldivelement>

时间:2013-12-05 04:38:57

标签: javascript jquery dom

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

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。

我做错了什么?

3 个答案:

答案 0 :(得分:3)

您正尝试在jQuery对象上调用DOM函数,因为get为您提供DOM对象而不是jQuery对象使用eq()代替get()来获取jQuery对象

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

答案 1 :(得分:0)

.get(index)返回一个dom元素引用,该引用没有像jQuery提供的offset()之类的方法。所以你需要使用元素的jQuery包装器来使用像.offset() / .width()

这样的方法
var node = $(ele).appendTo('#rPaper');

答案 2 :(得分:0)

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