Додавання елемента з ефектом зникнення [jQuery]


121
var html = "<div id='blah'>Hello stuff here</div>"

$("#mycontent").append(html).fadeIn(999);

Це, здається, не працює.

Я просто хочу класного ефекту, коли вміст додається.

Примітка. Я хочу, щоб тільки новий "бла" дів зникав, а не весь "зміст".


Відповіді:


262
$(html).hide().appendTo("#mycontent").fadeIn(1000);

1
Я хочу, щоб новий «благ» дів зів’яв.
TIMEX,

@TIMEX: Ось що це має робити.
icktoofay

Чи є причина, яку ви спочатку приховуєте, а потім додаєте (адже швидше спочатку встановити стиль, перш ніж приєднатися до DOM, чи щось подібне) чи це не має значення?
qwertymk

2
@qwertymk: Немає реальної причини. Якщо б браузери коли-небудь рендерувались, поки DOM все ще маніпулював (що на сьогоднішній день жоден браузер не робить, наскільки я знаю), не було б жодного спалаху вмісту, перш ніж він почав зникати. Знову ж таки, не дуже важливо.
icktoofay

1
@ArthurTarasov: Це додається #blahсамому собі, що не схоже на те, що ти хочеш зробити (і я здогадуюсь, що це трактується як неоперація). Ви також можете просто відкинути .appendToдеталь і використовувати $('#mycontent').hide().fadeIn(1000).
icktoofay

52

Додавання трохи більше інформації:

jQuery реалізує "ланцюжок методів", що означає, що ви можете ланцюжок викликів методу на один і той же елемент. У першому випадку:

$("#mycontent").append(html).fadeIn(999);

ви будете застосовувати fadeIn виклик до об'єкта, який є цільовим ланцюжком методів, в цьому випадку #mycontent. Не те, що ти хочеш.

У чудовій відповіді @ icktoofay ви маєте:

$(html).hide().appendTo("#mycontent").fadeIn(1000);

Це в основному означає, створити html, встановити його як приховане за замовчуванням, додати його #mycontentта потім зникнути. Це мета ланцюга методів зараз hmtlзамість #mycontent.


18

Це також працює

$(Your_html).appendTo(".target").hide().fadeIn(300);

З повагою


Це найестетичніший спосіб впоратися із завмиранням, оскільки він дозволяє повністю скласти HTML-код і створити необхідні йому виміри перед тим, як згасати.
Антоніо

0

оскільки fadeIn - це перехід від приховування до показу, вам доведеться приховати "html" елемент, коли ви додасте його, а потім показати.

var html = "<div id='blah'>Hello stuff here</div>"

$("#mycontent").append(function(){
  return html.hide();
});

$('#blah').fadeIn(999);

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.