المحدد :eq()
في jQuery
المحدد :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>