jQuery: создание нового элемента DOM и его отображение

Итак, как следует из названия, я хочу создать новый элемент dom (HTML генерируется и извлекается через AJAX). Я как бы заработал, но он кажется скрытым, и когда я пытаюсь Fade In, он ломается!

   function AddContent(Content) {
        div = document.createElement(Content)
        div.appendTo($("#contentAreas"));
        //    $(div).fadeIn("slow");
        }

Он в основном вставляет элемент в правильное положение, но не показывает его. Когда я пытаюсь его замаскировать, это не удается. Нет ошибок.

Любые идеи?


person Damien    schedule 30.06.2009    source источник
comment
Не могли бы вы быть более описательным? Как это ломается? Как выглядит Контент? Как выглядит #contentAreas?   -  person Andrew Hare    schedule 30.06.2009
comment
Кроме того, что произойдет, если вы выполните: $(#contentAreas).append(div);   -  person Tony Miller    schedule 30.06.2009


Ответы (5)


Div должен быть jQuery для работы appendTo. Попробуй это:

 function AddContent( content ) {
     $(content).appendTo("#contentAreas").fadeIn("slow");
 }
person tvanfosson    schedule 30.06.2009
comment
Дэмиен, обратите внимание, что appendTo принимает селектор, поэтому вы можете просто сделать .appendTo(#contentAreas). Сохраняет создание другого объекта jquery без причины - person redsquare; 30.06.2009
comment
@redsquare - спасибо, что указали на это. Я обновил, так как это делает код чище. Однако внутренне я думаю, что первое, что делает appendTo, это jQuery (селектор). - person tvanfosson; 30.06.2009
comment
@tvanfosson - действительно, помогает сэкономить несколько нажатий клавиш !! - person redsquare; 30.06.2009

Должно быть $(div).appendTo(...). Или, возможно, вы могли бы изменить способ создания div на div = $(Content).

person John Kugelman    schedule 30.06.2009

Вам не нужен createElement, конструктор jQuery может принимать html в качестве параметра (при условии, что содержимое представляет собой строку html):

function AddContent(content) {
   var div = $(content);
   div.appendTo($("#contentAreas"));
   $(div).fadeIn("slow");
}
person Alistair Evans    schedule 30.06.2009

Как насчет этого:

   function AddContent(Content) {
        div = $('<div>' + Content + '</div>');           
        div.appendTo($("#contentAreas")).fadeIn("slow");
   }
person karim79    schedule 30.06.2009

appendTo принимает селектор, поэтому он не должен быть объектом jquery, как во всех других примерах выше.

function AddContent( content ) {
     $(content).appendTo("#contentAreas").fadeIn("slow");
 }
person redsquare    schedule 30.06.2009