2015-12-11 3 views
0

Прежде всего, спасибо за помощь заранее.jQuery appendTo Parent Trouble

Я пытаюсь в основном зависнуть на повороте div надпись на каждый якорный ярлык, который я нахожу на странице. Поэтому я получаю смещение, нахожу высоту и ширину каждого элемента, а затем создаю новый div и устанавливаю CSS для этих измерений. У меня возникают проблемы с кодом, который добавляет вновь созданный DIV к родительскому тегу привязки.

$("a").each(function(index) { 
    tempoffset = $(this).offset(); 
    tempheight = $(this).height(); 
    tempwidth = $(this).width(); 
    tempoverlay = document.createElement('div'); 
    tempoverlay.appendTo($(this).parent()); 
    tempoverlay.setAttribute("style","background: #ccc; position: fixed; height: " + tempheight + "px; width: " + tempwidth + "px; left: " + tempoffset.left + "px; top: " + tempoffset.top + "px;"); 
}); 

Я получаю ошибку, что говорит

tempoverlay.appendTo не является функцией Любые мысли о том, что может быть здесь происходит?

ответ

2

tempoverlay является уроженцем узел DOM, а не объект JQuery, так как это то, что создает document.createElement, и как таковой он не имеет appendTo метод.

Создать JQuery объектов вместо

var tempoverlay = $('<div />'); 

tempoverlay.appendTo($(this).parent()) 
      .css({ 
        background : '#ccc', 
        position : 'fixed', 
        height  : tempheigh, 
        width  : tempwidth, 
        left  : tempoffset.left, 
        top  : tempoffset.top 
       }); 
0

Попробуй использовать append() вместо так tempoverlay не является объект JQuery, и вы не можете вызвать функцию JQuery .appendTo на йот узле:

$("a").each(function(index) { 
    tempoffset = $(this).offset(); 
    tempheight = $(this).height(); 
    tempwidth = $(this).width(); 
    tempoverlay = document.createElement('div'); 
    tempoverlay.setAttribute("style","background: #ccc; position: fixed; height: " + tempheight + "px; width: " + tempwidth + "px; left: " + tempoffset.left + "px; top: " + tempoffset.top + "px;"); 

    $(this).parent().append(tempoverlay); 
}); 

Надеется, что это помогает ,

0

tempoverlay не является элементом jQuery. это элемент dom.

Попробуйте следующее: $(tempoverlay).appendTo...