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

من موسوعة حسوب


‎.addClass( className )‎

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

كائن jQuery.

الوصف

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

‎.addClass( className )‎

أضيفت في الإصدار: 1.0

className

سلسلة نصيّة من الكائن String، وتُمثِّل صنف أو عدة أصناف مفصولة بمسافة بينها لإضافتها إلى الخاصيّة class لكل عنصر مُطابق.

‎.addClass( function )‎

أضيفت في الإصدار: 1.4

Function

دالة على الشكل Function( Integer index, String currentClassName )‎ وتُعيد سلسلة نصيّة.

دالة تُعيد اسم أو عدة أسماء لأصناف مفصولةً بمسافة بينها لإضافتها إلى اسم الصّنف أو أسماء الأصناف الموجودة. this هو العنصر الحالي. تستقبل فهرس موقع العنصر في المجموعة واسم أو أسماء الأصناف الموجودة كوسائط لها.

من المهم أن نلاحظ أن هذا التّابع لا يستبدل الصّنف الحالي، بل يضيفه ببساطة ملحقًا إياه بأي صنف معين مسبقًا للعناصر.

قبل إصدار jQuery 1.2/2.2 كان التّابع ‎.addClass()‎ يتحكم بخاصيّة الكائن className للعناصر المحدّدة وليس بخاصيّة HTML ‏class‏، وحالما تتغيّر خاصيّة الكائن يُحدِّث المتصفّح خاصيّة HTML وفق ذلك، وتفسير هذا السّلوك هو أنّ هذا التّابع كان يعمل فقط للمستندات ذات الصّياغة HTML DOM (على سبيل المثال مستندات XML غير النقيّة).

تغيّر هذا السّلوك بدءًا من إصدار jQuery 1.12/2.2 لتحسين الدّعم لمستندات XML وتضمين مستندات SVG أيضًا. وبدءًا من هذا الإصدار استُخدِمَت خاصيّة HTML ‏class بدلًا من ذلك، لذا يُمكِن استخدام التّابع ‎.addClass()‎ مع مستندات XML أو SVG.

من الممكن إضافة أكثر من صنف في نفس الوقت، مفصولةً بمسافة بينها، إلى مجموعة العناصر المُطابقة كما يلي:

$( "p" ).addClass( "myClass yourClass" );

يُستَخدَم هذا التّابع عادةً مع التّابع ‎.removeClass()‎ للتبديل بين أصناف العناصر من صنف إلى آخر، كما يلي:

$( "p" ).removeClass( "myClass noClass" ).addClass( "yourClass" );

أُزيل هنا الصّنفان myClass و noClass من كل الفقرات وأُضيف الصّنف yourClass. بدءًا من إصدار jQuery 1.4 أصبح التّابع ‎.addClass()‎ قادرًا على استقبال دالة كوسيط:

$( "ul li" ).addClass(function( index ) {
  return "item-" + index;
});

انطلاقًا من قائمة غير مُرتّبة تحتوي على عنصري <li> يُضيف هذا المثال الصّنف ‎"item-0"‎ لعنصر <li> الأول و ‎"item-1"‎ للعنصر الثاني .

أمثلة

إضافة الصّنف ‎"selected"‎ للعناصر المُطابقة:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>addClass demo</title>
  <style>
  p {
    margin: 8px;
    font-size: 16px;
  }
  .selected {
    color: blue;
  }
  .highlight {
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p>Hello</p>
<p>and</p>
<p>Goodbye</p>
 
<script>
$( "p" ).last().addClass( "selected" );
</script>
 
</body>
</html>

إضافة الأصناف ‎"selected"‎ و ‎"highlight"‎ للعناصر المُطابقة:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>addClass demo</title>
  <style>
  p {
    margin: 8px;
    font-size: 16px;
  }
  .selected {
    color: red;
  }
  .highlight {
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p>Hello</p>
<p>and</p>
<p>Goodbye</p>
 
<script>
$( "p:last" ).addClass( "selected highlight" );
</script>
 
</body>
</html>

تمرير دالة إلى التّابع ‎.addClass()‎ لإضافة الصّنف ‎"green"‎ إلى عنصر div يملك مسبقًا الصّنف‎"red" ‎:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>addClass demo</title>
  <style>
  div {
    background: white;
  }
  .red {
    background: red;
  }
  .red.green {
    background: green;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
 <div>This div should be white</div>
 <div class="red">This div will be green because it now has the "green" and "red" classes.
   It would be red if the addClass function failed.</div>
 <div>This div should be white</div>
 <p>There are zero green divs</p>
 
<script>
$( "div" ).addClass(function( index, currentClass ) {
  var addedClass;
 
  if ( currentClass === "red" ) {
    addedClass = "green";
    $( "p" ).text( "There is one green div" );
  }
 
  return addedClass;
});
</script>
 
</body>
</html>

مصادر