Я пытаюсь создать элемент "на лету", а затем получить центр указанного элемента. Вот что я имею:
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.
Что я делаю не так?
Вы пытаетесь вызвать функцию jQuery
на объекте DOM
поскольку get дает вам объект DOM
не объект jQuery. Используйте eq()
вместо get()
для получения объекта jQuery
var node = $(ele).appendTo('#rPaper').eq(0);
var node = $(ele).appendTo('#rPaper');
var offset = node.offset();
.get(index) возвращает ссылку на элемент dom, которая не имеет методов, таких как offset(), которые предоставляются jQuery. поэтому вам нужно использовать обертку jQuery для элемента, чтобы использовать такие методы, как .offset()/.width()
var node = $(ele).appendTo('#rPaper');
ele
имеет только один корневой элемент