Ваша первая попытка очень близка, но помните, что append()
возвращает #thumbnails
, а не элемент, который вы только что добавили к нему. Вместо этого сначала создайте свой элемент и примените hide().fadeIn()
перед его добавлением:
$('#thumbnails')
.append($('<li><img src="/photos/t/'+data.filename+'"/></li>')
.hide()
.fadeIn(2000)
);
Здесь используется функция доллара, чтобы построить <li>
раньше времени. Конечно, вы также можете написать это в две строки, если это прояснит ситуацию:
var item = $('<li><img src="/photos/t/'+data.filename+'"/></li>')
.hide()
.fadeIn(2000);
$('#thumbnails').append(item);
Редактировать: Ваша вторая попытка также почти там, но вам нужно использовать children()
вместо filter()
. Последний удаляет только узлы из текущего запроса; Ваш недавно добавленный элемент отсутствует в этом запросе, а является дочерним узлом.
$('#thumbnails')
.append('<li stle="display:none"><img src="/photos/t/'+data.filename+'"/></li>')
.children(':last')
.hide()
.fadeIn(2000);