我正在尝试动态创建一个元素,然后获得所述元素的中心。这就是我所拥有的:
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。
我做错了什么?
答案 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();