ต่อท้ายองค์ประกอบที่มีเอฟเฟกต์จาง ​​[jQuery]


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

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

ดูเหมือนจะไม่ได้ผล

ฉันแค่อยากได้เอฟเฟกต์เจ๋ง ๆ เมื่อเนื้อหาถูกต่อท้าย

หมายเหตุ: ฉันต้องการให้ div "blah" ใหม่จางลงไม่ใช่ "mycontent" ทั้งหมด


คำตอบ:


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

1
ฉันอยากให้ Div "blah" ใหม่จางหายไป
TIMEX

@TIMEX: นั่นคือสิ่งที่ควรทำ
icktoofay

มีเหตุผลใดที่คุณต้องซ่อนก่อนแล้วจึงต่อท้าย (เพราะการตั้งค่าสไตล์ก่อนแนบ DOM หรืออะไรทำนองนั้นเร็วกว่า) หรือไม่ได้สร้างความแตกต่าง?
qwertymk

2
@qwertymk: ไม่มีเหตุผลที่แท้จริง หากเบราว์เซอร์เคยแสดงผลในขณะที่ DOM ยังคงถูกควบคุมอยู่ (ซึ่งในปัจจุบันยังไม่มีเบราว์เซอร์ทำเท่าที่ฉันรู้) จะไม่มีการกะพริบของเนื้อหาก่อนที่มันจะเริ่มจางหายไปอีกครั้งไม่สำคัญจริงๆ
icktoofay

1
@ArthurTarasov: นั่นผนวก#blahเข้ากับตัวมันเองซึ่งดูเหมือนจะไม่ใช่สิ่งที่คุณต้องการทำ (และฉันเดาว่ามันถูกตีความว่าเป็น no-op) คุณอาจมีเพียงวางส่วนและการใช้งาน.appendTo $('#mycontent').hide().fadeIn(1000)
icktoofay

52

เพิ่มข้อมูลเพิ่มเติมเล็กน้อย:

jQuery ใช้ "method Chaining" ซึ่งหมายความว่าคุณสามารถเชื่อมโยงการเรียกเมธอดกับองค์ประกอบเดียวกันได้ ในกรณีแรก:

$("#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 สามารถประกอบได้อย่างสมบูรณ์และสร้างขนาดที่ต้องการก่อนที่จะจางหายไป
Antonio Nogueras

0

เนื่องจากการเฟดอินเป็นการเปลี่ยนจากซ่อนเป็นการแสดงคุณจะต้องซ่อนองค์ประกอบ "html" เมื่อคุณต่อท้ายแล้วจึงจะแสดงได้

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

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.