التابع ‎.andSelf()‎‎‎ في jQuery

من موسوعة حسوب
اذهب إلى: تصفح، ابحث

‎.andSelf()‎

القيمة المعادة

كائن jQuery.

أُهمِل هذا التّابع في الإصدار: 1.8، وأُزيل في الإصدار: 3.0.

الوصف

يُستخدَم التّابع ‎.andSelf()‎ في إضافة مجموعة العناصر الموجودة سابقًا في المَكدَس (stack) إلى المجموعة الحاليّة.

‎.andSelf()‎

أُضيفت في الإصدار: 1.2.

لا يقبل هذا التابع أيّة وسائط.

ملاحظة: أصبح هذا التّابع مهملًا، ويُعتبَر الآن اسمًا بديلًا (alias) للتابع ‎.addBack()‎ والذي يجب استخدامه في إصدار jQuery 1.8 فما بعد.

كما هو موصوف في صفحة التّابع ‎.end()‎ تحتفظ كائنات jQuery بمَكدَس داخلي يتتبّع التغييرات إلى مجموعة العناصر المُوافقة. عندما يُستدعى أحد توابع التحكّم في DOM تُدفَع مجموعة العناصر الجديدة في المكدس. يُساعدنا التّابع ‎.andSelf()‎ إن كُنّا نرغب بالاحتفاظ بمجموعة العناصر الموجودة سابقًا.

فلنأخذ مثالًا عن صفحة تحتوي على قائمة بسيطة:
<ul>
 <li>العنصر 1 في القائمة</li>
 <li>العنصر 2 في القائمة</li>
 <li class="third-item">العنصر 3 في القائمة</li>
 <li>العنصر 4 في القائمة</li>
 <li>العنصر 5 في القائمة</li>
</ul>
ينتج عن الشّيفرة التالية خلفيّة حمراء خلف عناصر القائمة الثّالث والرّابع والخامس:
$( "li.third-item" ).nextAll().andSelf()
 .css( "background-color", "red" );
في البداية يجد المُحدِّد المبدئي العنصر الثالث من القائمة، ممّا يُؤدِّي إلى تهيئة المَكدَس بمجموعة تحتوي فقط على هذا العنصر، ثمّ يدفع استدعاء التابع ‎.nextAll()‎ العناصر 4 و 5 إلى المَكدَس، وأخيرًا يدمج التّابع ‎.andSelf()‎‎‎ هاتين المجموعتين معًا، مُنشِئًا بذلك كائن jQuery يُشير إلى العناصر الثّلاثة بحسب ترتيبها في المستند:
{[<li.third-item>,<li>,<li> ]}

أمثلة

يُؤدّي التّابع ‎.andSelf()‎ لإضافة مجموعة عناصر DOM الموجودة سابقًا في المَكدَس إلى المجموعة الحاليّة. في المثال الأول من الشّيفرة التالية يحتوي المَكدَس على المجموعة النّاتجة عن ‎.find("p")‎، وفي المثال الثّاني يُضيف التّابع ‎.andSelf()‎‎‎ مجموعة العناصر الموجودة سابقًا في المكدس وهي في هذه الحالة ‎‎$( "div.after-andself" )‎‎ إلى المجموعة الحاليّة وبالتالي تحديد عنصر ‎<div>‎ والفقرات الموجودة ضمنه:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>andSelf مثال عن التّابع</title>

<style>
 p, div {
   margin: 5px;
   padding: 5px;
 }

 .border {
   border: 2px solid red;
 }

 .background {
   background: yellow;
 }

 .left, .right {
   width: 45%;
   float: left;
 }

 .right {
   margin-left: 3%;
 }
</style>

<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>

<body>
<div class="left">
	<p><strong>قبل استخدام التّابع <code>andSelf()</code></strong></p>
 
	<div class="before-andself">
		<p>الفقرة الأولى</p>
		<p>الفقرة الثانية</p>
	</div>

</div>

<div class="right">
	<p><strong>بعد استخدام التّابع <code>andSelf()</code></strong></p> 
	
	<div class="after-andself">
		<p>الفقرة الأولى</p>
		<p>الفقرة الثانية</p>
	</div>

</div>

<script>
$( "div.left, div.right" ).find( "div, div > p" ).addClass( "border" );

// المثال الأول

$( "div.before-andself" ).find( "p" ).addClass( "background" );

// المثال الثاني

$( "div.after-andself" ).find( "p" ).andSelf().addClass( "background" );

</script>

</body>

</html>

مصادر