Uncaught TypeError: У объекта # <HTMLDivElement> нет метода 'offset'

0

Я пытаюсь создать элемент "на лету", а затем получить центр указанного элемента. Вот что я имею:

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

3 ответа

3

Вы пытаетесь вызвать функцию jQuery на объекте DOM поскольку get дает вам объект DOM не объект jQuery. Используйте eq() вместо get() для получения объекта jQuery

 var node = $(ele).appendTo('#rPaper').eq(0);
  • 0
    Нет ошибок, но node.height () и node.width () снова равны 0.
  • 0
    Я не думаю , что это необходимо , поскольку ele имеет только один корневой элемент
Показать ещё 5 комментариев
0
 var node = $(ele).appendTo('#rPaper');
 var offset = node.offset();
  • 0
    Это то, что у меня было изначально, но тогда высота и ширина равны 0
0

.get(index) возвращает ссылку на элемент dom, которая не имеет методов, таких как offset(), которые предоставляются jQuery. поэтому вам нужно использовать обертку jQuery для элемента, чтобы использовать такие методы, как .offset()/.width()

var node = $(ele).appendTo('#rPaper');
  • 0
    Это то, что у меня было изначально, но тогда высота и ширина равны 0.
  • 0
    @ ScottBeeson, тогда мы должны решить эту проблему ...
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню