المحدد ‎:eq()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

المحدد ‎:eq()‎‎

الوصف

يُحدد العنصر الموجود في الفهرس n داخل المجموعة المتطابقة.

jQuery( ":eq(index)" )‎

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

index

فهرس صفري للعنصر المراد مطابقته.

jQuery( ":eq(-index)" )‎

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

indexFromEnd

فهرس صفري للعنصر المراد مطابقته، معدود تنازليًا من العنصر الأخير.

تقوم المحددات المرتبطة بالفهارس ( ‎:eq()‎ و ‎:lt() و ‎:gt()‎ و ‎:even و ‎:odd ) بترشيح مجموعة العناصر التي طابقت التعبيرات التي تسبقها. وهي تُضيِّق المجموعة على أساس ترتيب العناصر داخل هذه المجموعة المتطابقة. على سبيل المثال، إذا حُدِدت العناصر أولاً باستخدام مُحدد فئة ( ‎.myclass ) وأُعيدت أربعة عناصر، يتم إعطاء هذه العناصر الفهارس من 0 إلى 3 لأغراض هذه المحددات.

لاحظ أنه نظرًا لأن مصفوفات JavaScript تستخدم الفهرسة الصفرية، فإن هذه المحددات تفعل الأمر نفسه. وهو السبب في تحديد ‎$( ".myclass:eq(1)" )‎ للعنصر الثاني في المستند مع الفئة myclass بدلاً من الأول. في المقابل، يستخدم ‎:nth-child(n)‎ فهرسة أحادية لتتوافق مع مواصفات CSS.

قبل الإصدار jQuery 1.8، لم يكن المحدد ‎:eq(index) يقبل قيمة سالبة للفهرس index (على الرغم من التابع ‎.eq(index)‎ يقبلها).

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

لأن ‎:eq()‎ هو ملحق تابع لمكتبة jQuery وليس جزءًا من مواصفات CSS، فلا يمكن استفادة الاستعلامات باستخدام ‎:eq()‎ من تحسين الأداء الذي يوفره تابع DOM الأصلي querySelectorAll()‎. للحصول على أداء أفضل في المتصفحات الحديثة، استخدم ‎$("your-pure-css-selector").eq(index)‎ بدلاً من ذلك.

أمثلة

العثور على ثالث عنصر <td> في الجدول <table>:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>eq مثال على المحدد</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table border="1">
  <tr><td>TD #0</td><td>TD #1</td><td>TD #2</td></tr>
  <tr><td>TD #3</td><td>TD #4</td><td>TD #5</td></tr>
  <tr><td>TD #6</td><td>TD #7</td><td>TD #8</td></tr>
</table>
 
<script>
$( "td:eq( 2 )" ).css( "color", "red" );
</script>
 
</body>
</html>

تطبيق ثلاثة أنماط مختلفة لسرد العناصر لإثبات أنَّ ‎:eq()‎ مُصمم لتحديد عنصر واحد، بينما التوابع ‎:nth-child()‎ أو ‎:eq()‎ داخل حلقات مثل ‎.each()‎ يمكنها تحديد عناصر متعددة:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>eq مثال على المحدد</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<ul class="nav">
  <li>القائمة 1, البند 1</li>
  <li>القائمة 1, البند 2</li>
  <li>القائمة 1, البند 3</li>
</ul>
<ul class="nav">
  <li>القائمة 2, البند 1</li>
  <li>القائمة 2, البند 2</li>
  <li>القائمة 2, البند 3</li>
</ul>
 
<script>
// تطبيق لون الخلفية الصفراء على <li> واحدة فقط
$( "ul.nav li:eq(1)" ).css( "backgroundColor", "#ff0" );
 
// تطبيق الخط المائل على نص <li> الثاني داخل كل <ul class = "nav">
$( "ul.nav" ).each(function( index ) {
  $( this ).find( "li:eq(1)" ).css( "fontStyle", "italic" );
});
 
// تطبيق لون النص الأحمر على سليلات <ul class = "nav">
// لكل <li> يكون الابن الثاني من أصله
$( "ul.nav li:nth-child(2)" ).css( "color", "red" );
</script>
 
</body>
</html>

إضافة فئة إلى العنصر الثاني من القائمة الثانية من خلال استهداف عنصر <li> قبل الأخير:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>eq مثال على المحدد</title>
  <style>
  .foo {
    color: blue;
    background-color: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<ul class="nav">
  <li>القائمة 1, البند 1</li>
  <li>القائمة 1, البند 2</li>
  <li>القائمة 1, البند 3</li>
</ul>
<ul class="nav">
  <li>القائمة 2, البند 1</li>
  <li>القائمة 2, البند 2</li>
  <li>القائمة 2, البند 3</li>
</ul>
 
<script>
$( "li:eq(-2)" ).addClass( "foo" )
</script>
 
</body>
</html>

مصادر