الفرق بين المراجعتين لصفحة: «jQuery/insertAfter»

من موسوعة حسوب
 
(6 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:التابع <code>‎.insertAfter()‎‎‎‎‎</code>‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery}}</noinclude>
<noinclude>{{DISPLAYTITLE:التابع <code>‎.insertAfter()‎‎‎‎‎</code>‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery}}</noinclude>
== <code>‎.insertAfter( target )‎</code> ==
== <code>‎.insertAfter( target )‎</code> ==


سطر 13: سطر 12:


==== <code>target</code> ====
==== <code>target</code> ====
كائن قد يكون من النوع [[jQuery/Selector|Selector]] أو [[jQuery/htmlString|htmlString]] أو [[jQuery/Element|Element]] أو [[JavaScript/Array|Array]] أو [[jQuery/jQuery|jQuery]]، وهو يمثل محدد أو عنصر أو مصفوفة عناصر أو سلسلة HTML أو كائن jQuery؛ ستدرج مجموعة العناصر المطابقة بعد العنصر (العناصر) المحدد بواسطة هذا المعامل.
كائن قد يكون من النوع Selector أو htmlString أو [[JavaScript/Element|Element]] أو [[JavaScript/Array|Array]] أو [[jQuery/jQuery|jQuery]]، وهو يمثل محدد أو عنصر أو مصفوفة عناصر أو سلسلة HTML أو كائن jQuery؛ ستدرج مجموعة العناصر المطابقة بعد العنصر (العناصر) المحدد بواسطة هذا المعامل.


ينفذ كلٌ من التابع <code>‎[[jQuery/after|.after()]]‎</code> والتابع <code>‎.insertAfter()‎</code> نفس المهمة. الاختلاف الرئيسي هو في بناء الجملة، على وجه التحديد،و في موضع المحتوى والهدف. باستخدام ‎<code>[[jQuery/after|.after()‎]]</code>، يكون تعبير المحدد الذي يسبق التابع هو الحاوية التي يُدخَل بعدها المحتوى.من ناحية أخرى، مع <code>‎.insertAfter()</code>‎، يسبق المحتوى التابع، إما كتعبير محدد أو كعلامة أُنشأت مباشرة، ويُدرَج بعد الحاوية المستهدفة.
ينفذ كلٌ من التابع <code>‎[[jQuery/after|.after()]]‎</code> والتابع <code>‎.insertAfter()‎</code> نفس المهمة. الاختلاف الرئيسي هو في بناء الجملة، على وجه التحديد، وفي موضع المحتوى والهدف. باستخدام ‎<code>[[jQuery/after|.after()‎]]</code>، يكون تعبير المحدد الذي يسبق التابع هو الحاوية التي يُدخَل بعدها المحتوى. من ناحية أخرى، مع <code>‎.insertAfter()</code>‎، يسبق المحتوى التابع، إما كتعبير محدد أو كعلامة أُنشأت مباشرة، ويُدرَج بعد الحاوية المستهدفة.


إليك شيفرة HTML التالية:<syntaxhighlight lang="html">
إليك شيفرة HTML التالية:<syntaxhighlight lang="html">
سطر 43: سطر 42:
</syntaxhighlight>إذا كان هناك أكثر من عنصر هدف واحد، فستُنشاء نسخ مستنسَخة للعنصر المدرج لكل هدف بعد الأول، وتُعاد تلك المجموعة الجديدة (العنصر الأصلي بالإضافة إلى النسخ).
</syntaxhighlight>إذا كان هناك أكثر من عنصر هدف واحد، فستُنشاء نسخ مستنسَخة للعنصر المدرج لكل هدف بعد الأول، وتُعاد تلك المجموعة الجديدة (العنصر الأصلي بالإضافة إلى النسخ).


قبل إصدار jQuery [http://api.jquery.com/category/version/1.9 1.9]، لم يكن التابع append-to-single-element ينشئ مجموعة جديدة، بل قامت بدلاً من ذلك بإعادة المجموعة الأصلية التي جعلت من الصعب استخدام التابع ‎<code>[[jQuery/end|.end()]]</code>‎ بشكل موثوق عند استخدامه مع عدد غير معروف من العناصر.
قبل إصدار jQuery [http://api.jquery.com/category/version/1.9 1.9]، لم تكن الحالة التي يضيف هذا التابع فيها المحتوى إلى عنصرٍ وحيد تنشئ مجموعة جديدة، بل قامت بدلاً من ذلك بإعادة المجموعة الأصلية التي جعلت من الصعب استخدام التابع ‎<code>[[jQuery/end|.end()]]</code>‎ بشكل عملي عند استخدامه مع عدد غير معروف من العناصر.


=== ملاحظات إضافية ===
=== ملاحظات إضافية ===
حسب التصميم، يمكن لأي منشئ jQuery أو تابع يقبل سلسلة HTML - مثل <code>[[jQuery/|jQuery()‎‎]]</code> و‎<code>[[JQuery/append|.append()]]</code>‎‎و <code>‎[[jQuery/after|.after()]]‎‎</code>، إلخ - تنفيذ تعليمات برمجية. يمكن أن يحدث هذا عن طريق حقن علامات البرنامج النصي أو استخدام خاصيات HTML التي تُنفِّذ التعليمات البرمجية (على سبيل المثال، <code>‎<img onload="">‎</code> ). لا تُستخدم هذه التوابع لإدراج سلاسل حصل عليها من مصادر غير موثوقة مثل معاملات استعلام URL أو ملفات تعريف الارتباط أو مدخلات النماذج. القيام بذلك قد يتسبب في الثغرات الأمنية من النوع cross-site-scripting أو (XSS). يجب إزالة أو التخلص من أي إدخال للمستخدم قبل إضافة محتوى إلى المستند.
حسب التصميم، يمكن لأي منشئ jQuery أو تابع يقبل سلسلة HTML - مثل <code>[[jQuery/jQuery|jQuery()‎‎]]</code> و‎<code>[[jQuery/append|.append()]]</code>‎‎و <code>‎[[jQuery/after|.after()]]‎‎</code>، إلخ - تنفيذ تعليمات برمجية. يمكن أن يحدث هذا عن طريق حقن علامات البرنامج النصي أو استخدام خاصيات HTML التي تُنفِّذ التعليمات البرمجية (على سبيل المثال، <code>‎<img onload="">‎</code> ). لا تُستخدم هذه التوابع لإدراج سلاسل حصل عليها من مصادر غير موثوقة مثل معاملات استعلام URL أو ملفات تعريف الارتباط أو مدخلات النماذج. القيام بذلك قد يتسبب في الثغرات الأمنية من النوع cross-site-scripting أو (XSS). يجب إزالة أو التخلص من أي إدخال للمستخدم قبل إضافة محتوى إلى المستند.


لا يدعم jQuery رسميًا SVG. استخدام توابع jQuery على مستندات SVG قد يتسبب في حدوث سلوكيات غير متوقعة ما لم تُوثَّق صراحةً لهذا التابع. من أمثلة التوابع التي تدعم SVG اعتبارًا من jQuery [http://api.jquery.com/category/version/3.0 3.0] التابع <code>[[jQuery/addClass|addClass]]</code> والنابع <code>[[jQuery/removeClass|removeClass]]</code> .
لا تدعم jQuery رسميًا SVG. استخدام توابع jQuery على مستندات SVG قد يتسبب في حدوث سلوكيات غير متوقعة ما لم تُوثَّق صراحةً لهذا التابع. من أمثلة التوابع التي تدعم SVG اعتبارًا من jQuery [http://api.jquery.com/category/version/3.0 3.0] التابع <code>[[jQuery/addClass|addClass]]</code> والنابع <code>[[jQuery/removeClass|removeClass]]</code> .


=== أمثلة ===
=== أمثلة ===
إدراج جميع الفقرات بعد العنصر الذس له مُعرِّف <code>"foo"</code>. مثل ‎<code>$( "#foo" ).after( "p" )‎</code>.<syntaxhighlight lang="html">
إدراج جميع الفقرات بعد العنصر الذي له مُعرِّف <code>"foo"</code>. وهذا يماثل ‎<code>$( "#foo" ).after( "p" )‎</code>:<syntaxhighlight lang="html">
<!doctype html>
<!doctype html>
<html lang="en">
<html lang="en">
سطر 67: سطر 66:
   
   
<p> هذا ما أقول... </p>
<p> هذا ما أقول... </p>
<div id="foo">فوو!</div>
<div id="foo">foo!</div>
   
   
<script>
<script>

المراجعة الحالية بتاريخ 13:21، 1 يوليو 2018

‎.insertAfter( target )‎

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

يُعيد كائنًا من النوع jQuery.

الوصف

إدخال كل عنصر من مجموعة العناصر المُطابقة بعد الهدف.

‎.insertAfter( target )‎

أُضيف مع الإصدار: 1.0.

target

كائن قد يكون من النوع Selector أو htmlString أو Element أو Array أو jQuery، وهو يمثل محدد أو عنصر أو مصفوفة عناصر أو سلسلة HTML أو كائن jQuery؛ ستدرج مجموعة العناصر المطابقة بعد العنصر (العناصر) المحدد بواسطة هذا المعامل.

ينفذ كلٌ من التابع .after() والتابع ‎.insertAfter()‎ نفس المهمة. الاختلاف الرئيسي هو في بناء الجملة، على وجه التحديد، وفي موضع المحتوى والهدف. باستخدام ‎.after()‎، يكون تعبير المحدد الذي يسبق التابع هو الحاوية التي يُدخَل بعدها المحتوى. من ناحية أخرى، مع ‎.insertAfter()‎، يسبق المحتوى التابع، إما كتعبير محدد أو كعلامة أُنشأت مباشرة، ويُدرَج بعد الحاوية المستهدفة.

إليك شيفرة HTML التالية:

<div class="container">
  <h2>تحية طيبة</h2>
  <div class="inner">مرحبًا</div>
  <div class="inner">مع السلامة</div>
</div>

يمكننا إنشاء محتوى وإدراجه بعد عدة عناصر في وقت واحد:

$( "<p>Test</p>" ).insertAfter( ".inner" );

يحصل كل عنصر <div> داخلي على هذا المحتوى الجديد:

<div class="container">
  <h2>تحية طيبة</h2>
  <div class="inner">مرحبًا</div>
  <p>فقرة</p>
  <div class="inner">مع السلامة</div>
  <p>فقرة</p>
</div>

يمكننا أيضًا تحديد عنصر في الصفحة وإدراجه بعد الآخر:

$( "h2" ).insertAfter( $( ".container" ) );

إذا أُدرِج عنصر مُختار بهذه الطريقة في مكان واحد في أي مكان في DOM، فسينقل بعد الهدف (غير مستنسخ) وتُعاد مجموعة جديدة تتكون من العنصر المدرج:

<div class="container">
  <div class="inner">مرحبًا</div>
  <div class="inner">مع السلامة</div>
</div>
<h2>تحية طيبة</h2>

إذا كان هناك أكثر من عنصر هدف واحد، فستُنشاء نسخ مستنسَخة للعنصر المدرج لكل هدف بعد الأول، وتُعاد تلك المجموعة الجديدة (العنصر الأصلي بالإضافة إلى النسخ).

قبل إصدار jQuery 1.9، لم تكن الحالة التي يضيف هذا التابع فيها المحتوى إلى عنصرٍ وحيد تنشئ مجموعة جديدة، بل قامت بدلاً من ذلك بإعادة المجموعة الأصلية التي جعلت من الصعب استخدام التابع ‎.end()‎ بشكل عملي عند استخدامه مع عدد غير معروف من العناصر.

ملاحظات إضافية

حسب التصميم، يمكن لأي منشئ jQuery أو تابع يقبل سلسلة HTML - مثل jQuery()‎‎ و‎.append()‎‎و .after()‎‎، إلخ - تنفيذ تعليمات برمجية. يمكن أن يحدث هذا عن طريق حقن علامات البرنامج النصي أو استخدام خاصيات HTML التي تُنفِّذ التعليمات البرمجية (على سبيل المثال، ‎<img onload="">‎ ). لا تُستخدم هذه التوابع لإدراج سلاسل حصل عليها من مصادر غير موثوقة مثل معاملات استعلام URL أو ملفات تعريف الارتباط أو مدخلات النماذج. القيام بذلك قد يتسبب في الثغرات الأمنية من النوع cross-site-scripting أو (XSS). يجب إزالة أو التخلص من أي إدخال للمستخدم قبل إضافة محتوى إلى المستند.

لا تدعم jQuery رسميًا SVG. استخدام توابع jQuery على مستندات SVG قد يتسبب في حدوث سلوكيات غير متوقعة ما لم تُوثَّق صراحةً لهذا التابع. من أمثلة التوابع التي تدعم SVG اعتبارًا من jQuery 3.0 التابع addClass والنابع removeClass .

أمثلة

إدراج جميع الفقرات بعد العنصر الذي له مُعرِّف "foo". وهذا يماثل ‎$( "#foo" ).after( "p" )‎:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>insertAfter مثال على التابع</title>
  <style>
  #foo {
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p> هذا ما أقول... </p>
<div id="foo">foo!</div>
 
<script>
$( "p" ).insertAfter( "#foo" );
</script>
 
</body>
</html>

مصادر