.clone( [ withDataAndEvents ] )
תיאור: יוצר עותק מלא של רשימת אלמנטים בהתאמה.
.clone( [ withDataAndEvents ], [ deepWithDataAndEvents ] )
false. *ב 1.5.0 ערך ברירת מחדל בטעות מוגדר כי true. זה יתוקן חזרה ל false ב 1.5.1 ומתקדם יותר..clone( [ withDataAndEvents ] )
שיטה .clone() מבצעת העתקה
מלאה
של רשימת האלמנטים בהתאמה, כלומר, היא מעתיקה אלמנטים בהתאמה, וגם צאצאהים של אלמנטים האלה וצמתי טקסט.
כאשר נעשה שימוש ביחד עם אחת מהשיטות ההכנסה,
.clone()
זו שיטה נוחה לשכפול אלמנטים בדף.
נבחן HTML הבא:
<div class="container"> <div class="hello">Hello</div> <div class="goodbye">Goodbye</div> </div>
כפי שהוצג בדיון על .append(), בדרך כלל כאשר אנו מוסיפים אלמנט במקום כלשהו ב- DOM, הוא נעה ממקום הישן שלו. לכן, בהתחשב הקוד:
$('.hello').appendTo('.goodbye');
התוצאה מבנה של DOM:
<div class="container">
<div class="goodbye">
Goodbye
<div class="hello">Hello</div>
</div>
</div>
כדי למנוע זאת, ובמקום ליצור עותק של האלמנט, היינו יכולים לכתוב את הדברים הבאים:
$('.hello').clone().appendTo('.goodbye');
זה יוצר:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">
Goodbye
<div class="hello">Hello</div>
</div>
</div>
שימו לב, שכאשר אנחנו משתמשים בשיטה
.clone(), אנחנו יכולים לשנות אלמנטים לפני הוספה (הוספה מחדש) שלהם לתוך המסמך.
בדרך כלל כל המטפלי אירועים, הקשורים לאלמנט המקור
לא
מועתקים לתוך העותק.
פרמטר אופציונלי
withDataAndEvents
מאפשר לנו לשנות התנהגות הזו,
ובמקום זה גם לעשות עותקים של כל מטפלי האירועים,
ולקשור אותם עם עותק חדש של האלמנט.
החל מ-
jQuery 1.4,
כל נתוני האלמנט
(
הקשורים באמצעות שיטה
.data())
גם מעותקים לעותק חדש.
עם זאת, אובייקטים ומערכים בתוך האלמנט נתונים אינם מועתקים וממשיכים להיות משותפים בין אלמנט המשוכפל ואלמנט המקורי. כדי להעתיק את כל הנתונים לעומק, תהעתיקו כל אחד ידנית:
החל מ jQuery 1.5,withDataAndEvents ניתן להרחיב עם deepWithDataAndEvents כדי להעתיק את האירועים ואת הנתונים עבור כל הילדים של אלמנט משובט.
דוגמאות
דוגמה 1
משובט כל אלמנטים b (ובוחר את שיבוטים) ומוסיף אותם לכל הפסקאות, לפני הפסקאות.דוגמה 1 - קוד מלא:
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <script> $(document).ready(function(){ $("b").clone().prependTo("p"); }); </script> </head> <body> <b>Hello</b><p>, how are you?</p> </body> </html>
דוגמה 2
מייצר כפתור שמסוגל לשבט את עצמו ( משבטים גם יכולים לשבט את עצמם )דוגמה 2 - קוד מלא:
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <script> $(document).ready(function(){ $("button").click(function(){ $(this).clone(true).insertAfter(this); }); }); </script> </head> <body> <button>Clone Me!</button> </body> </html>

