Применение .animate() к строке, добавленной с помощью .after()

#javascript #jquery #jquery-after

#javascript #jquery — jquery — запрос #jquery-после #jquery

Вопрос:

Итак, в настоящее время я использую следующее:

 $.ajax({
    type: "GET",
    url: "file.php",
    success: function(html) {
        $("#tableRow").after(html);
    }
});
  

которая аккуратно добавляет новую строку (или rows) в существующую таблицу.
file.php возвращает:

 <tr><td>stuff</td></tr>
  

Я могу добавлять по одной строке за раз.
Я пытаюсь анимировать только недавно добавленную строку, например:

 $("#tableRow").after(html).animate({ backgroundColor: "#bce4b4" }, "fast")
  

но это выделяет строку, после которой я добавляю новую строку. Я не могу заставить его применить только к этой новой строке. Как я могу это сделать?

Обновить:

Основываясь на полученных ответах, я собрал это воедино: http://jsfiddle.net/jreljac/5ctpc/3 / где я делаю следующее:

 $("<tr><td>2 1</td><td>2 2</td></tr>").insertAfter("#tableRow").animate({
    backgroundColor: "#bce4b4"
}, "slow");
  

(Я заменил то, что file.php передам с текстом»), и это, похоже, не работает. Он создает строку, но не анимирует. Я упускаю что-то простое?

Комментарии:

1. Да, вы забыли поставить галочку рядом с надписью «jQuery UI 1.8.16» 😉

Ответ №1:

Пользователь insertAfter вместо этого. Затем он анимирует правильную строку.

 $(html).insertAfter("#tableRow").animate(...
  

Комментарии:

1. вот так : $(html).insertAfter("#tableRow").animate(...)

2. Да, спасибо. Понял, что это было не так ясно, и добавил пример так, как вы это сделали.

Ответ №2:

Попробуйте вместо этого использовать insertAfter()

 $(html).insertAfter('#tableRow').animate({ backgroundColor: "#bce4b4" }, "fast");
  

Ответ №3:

Это сделает то, что вы хотите:

 $(html).insertAfter('#tableRow').animate({ backgroundColor: "#bce4b4" }, "fast")
  

Хотя ‘html’ — это всего лишь строка, вы все равно можете обернуть ее в $() , чтобы превратить в объект jQuery.