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

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

()slideUp.

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

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

الوصف

يخفي هذا التابع جميع العناصر المطابقة مع حركة انسحابيَّة.

‎.slideUp( [duration ] [, complete ] )‎

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

duration

عدد أو سلسلة نصية تمثِّل كمية الوقت الذي ستستغرقه عملية تحريك العنصر، وقيمته الافتراضيَّة هي 400.

complete

دالةٌ من الشكل Function()‎ وتُستدعَى مرةً وحدةً مع كل عنصر من العناصر المطابقة بعد اكتمال الحركة المطبَّقة عليه.

‎.slideDown( options )‎

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

Options

كائن من النوع Object، وهو مجموعة من الخيارات الإضافيَّة التي يمكن تمريرها للتابع وهي:

duration

عدد أو سلسلة نصية، ويحدِّد الوقت الذي ستستغرقه الحركة. قيمته الافتراضيَّة هي 400.

easing

سلسلة نصية، ويحدِّد دالة الانتقال السلس ستُسخدَم خلال الحركة. القيمة الافتراضيَّة هي swing.

queue

قيمة منطقية تحدِّد إذا ما كانت الحركة ستضاف إلى طابور التأثيرات الحركيَّة. إذا كانت قيمتها false، فستبدأ الحركة مباشرةً دون انتظار. بدءًا من الإصدار jQuery 1.7، أصبح هذا الخيار يقبل سلسلة نصيَّة أيضًا، وتضاف الحركة في هذه الحالة إلى الطابور الممثَّل بتلك السلسلة النصيَّة. عند استعمال اسم طابور خاص، فلن تبدأ الحركة تلقائيًا وإنَّما يجب استدعاء dequeue("queuename")‎. لبدء الحركة. القيمة الافتراضيَّة هي true.

specialEasing

كائن من النوع Object يحتوي على خاصِّيَّة واحدة أو أكثر من خاصِّيَّات CSS المُعرَّفة بوسيط الخاصِّيَّات (properties argument) ودوال الانتقال السلس المقابلة لها. (أضيف مع الإصدار 1.4).

step

دالة من الشكل Function( Number now, Tween tween )‎، وتمثل الدالة التي ستُستدعى لكل خاصِّيَّة تمَّ تحريكها من كل عنصر تمَّ تحريكه. توفِّر لنا هذه الدالة الفرصة لتعديل الكائن Tween من أجل تغيير قيمة الخاصِّيَّة قبل أن تُضبط.

progress

دالة من الشكل Function( Promise animation, Number progress, Number remainingMs )‎، وتمثل الدالة التي ستُستدعى مرة واحدة فقط لكل عنصر بعد كل خطوة من خطوات الحركة بغض النظر عن عدد الخاصِّيَّات التي تمَّ تحريكها. (أضيف مع الإصدار 1.8).

complete

دالة من الشكل Function()‎ تُستدعى عندما تنتهي الحركة المطبَّقة على العنصر.

start

دالة من الشكل Function( Promise animation )‎ وتمثِّل الدالة التي ستُستدعى عند بدء الحركة المطبقة على العنصر. (أضيف مع الإصدار 1.8).

done

دالة من الشكل Function( Promise animation, Boolean jumpedToEnd )‎، وتمثِّل الدالة التي ستُستدعى عند انتهاء الحركة المطبَّقة على العنصر (قبول الكائن Promise الخاص بها). (أضيف مع الإصدار 1.8).

fail

دالة من الشكل Function( Promise animation, Boolean jumpedToEnd )‎، وتمثِّل الدالة التي ستُستدعى عند فشل إكمال حركة العنصر (رفض الكائن Promise الخاص بها). (أضيف مع الإصدار 1.8).

always

دالة من الشكل Function( Promise animation, Boolean jumpedToEnd )‎، وتمثِّل الدالة التي ستُستدعى عند إتمام الحركة المطبقة على العنصر أو فشلها (إما أن يكون الكائن Promise قد قُبِل أو رُفِض). (أضيف مع الإصدار 1.8).

‎.slideDown( duration [, easing ] [, complete ])‎

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

duration

عدد أو سلسلة نصية، ويحدِّد كمية الوقت الذي ستستغرقه الحركة. القيمة الافتراضيَّة هي 400.

easing

سلسلة نصية، ويحدِّد دالة الانتقال السلس التي ستُسخدَم خلال الحركة. القيمة الافتراضيَّة هي swing.

complete

دالةٌ من الشكل Function()‎ وتُستدعَى مرةً وحدةً مع كل عنصر من العناصر المطابقة بعد اكتمال الحركة المطبقة عليه.

يحرِّك التابع ‎.slideUp()‎ ارتفاع العناصر المطابقة، ويؤدي ذلك إلى انسحاب الأجزاء السفليَّة من الصفحة للأعلى مخفيًا المحتوى الظاهر للمستخدم. عندما تصبح قيمة ارتفاع العنصر 0 أثناء تطبيق حركة لإخفائه، فستُضبط قيمة الخاصِّيَّة display إلى القيمة none للتأكُّد من أنَّه لم يعد للعنصر أي تأثير على تنسيق وتخطيط الصفحة.

تعطى قيمة الوسيط duration بالميلي ثانية، وكلما كانت قيمة هذا المعامل أكبر، استغرقت الحركات وقتًا أطول. يمكن أن يكون هذا الوسيط سلسلة نصية أيضًا مثل 'fast' التي تكافئ 200 ميلي ثانية و 'slow' التي تكافئ 600 ميلي ثانية. إن مُرِّرت سلسلة نصية أخرى خلافًا لهاتين السلسلتين أو لم تمرَّر قيمة لهذا الوسيط مطلقًا، فستكون الفترة الزمنية الافتراضيَّة هي 400 ميلي ثانية.

يمكن تحريك أي عنصر مثل صورة بسيطة:

<div id="clickme">
 اضغط هنا
</div>
<img id="book" src="book.png" alt="" width="100" height="123">

إن كان العنصر ظاهرًا منذ البداية، فيمكن إخفاؤه ببطئ مثل:

$( "#clickme" ).click(function() {
  $( "#book" ).slideUp( "slow", function() {
    // اكتملت الحركة
  });
});

الانتقال السلس (easing)

بدءًا من الإصدار jQuery 1.4.3، يمكن استخدام سلسلة نصية اختيارية لتسمية دالة الحركة السلسة. تُستعمَل دوال الحركة السلسة لتغيير السرعة في نقاط مختلفة داخل الحركة أثناء تقدم عملية التحريك. دوال الانتقال السلس الوحيدة المبنية في jQuery هي الدالة الافتراضيَّة swing وأخرى تتحرك بسرعة ثابتة تدعى linear. هناك دوال انتقال سلس أخرى يمكننا الحصول عليها باستعمال الإضافات، ومن أهمها الإضافة jQuery UI suite.

دالة رد النداء (Callback Function)

إن مُرِّر تابع رد نداء callback، فسيُستدعى هذا التابع مباشرةً بعد انتهاء الحركة، وهذا قد يكون مفيدًا لجمع حركات مختلفة معًا في سلسلة نصية وفقًا لتعاقب محدَّد. لايقبل التابع callback أية وسائط، ولكن يمكن استعمال this داخله الذي يشير إلى عنصر DOM الذي يجري تحريكه. إن شملت الحركة مجموعة من العناصر، فمن المهم أن نشير إلى أن دالة callback تُنفَّذ مرةً لكل عنصر مطابق، وليس مرةً واحدةً للحركة ككل.

بدءًا من الإصدار jQuery 1.6، يمكن استخدام التابع ‎.promise()‎ بالتزامن مع التابع deferred.done()‎ لتنفيذ دالة رد نداء واحدة للحركة ككل عند اكتمال حركة جميع العناصر المطابقة (راجع أمثلة التابع ‎‎.promise()‎).

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

يمكن إيقاف تشغيل كافة تأثيرات jQuery، بما في ذلك ‎.slideUp()‎، بشكل عام باستعمال الضبط jQuery.fx.off = true، والذي يضبط فعليًا المدة إلى 0. لمزيد من المعلومات، راجع jQuery.fx.off.

إن استُعمِل التابع ‎.sildeDown()‎ مع قائمة غير مرتَّبة <ul> وكانت قيمة الخاصِّيَّة position لعناصرها (<li>) هي relative أو absolute أو fixed، فقد لا تعمل التأثيرات الحركيَّة المطبَّقة عليها بشكل صحيح في الإصدار 6 من المتصفح IE وحتى الإصدار 9 ما لم تملك هذه القائمة الخاصِّيَّة layout. لحل هذه المشكلة، أضف قاعدتي CSS التاليتن إلى القائمة <ul> وهما: position: relative;‎ و zoom: 1;‎.

أمثلة

إخفاء جميع العناصر <div> عبر تحريكها وسحبها للأعلى خلال زمن قدره 400 ميلي ثانية:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>slideUp مثالٌ عن استعمال التابع</title>
  <style>
  div {
    background: #3d9a44;
    margin: 3px;
    width: 80px;
    height: 40px;
    float: left;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
اضغط عليّ!
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
 
<script>
$( document.body ).click(function() {
  if ( $( "div:first" ).is( ":hidden" ) ) {
    $( "div" ).show( "slow" );
  } else {
    $( "div" ).slideUp();
  }
});
</script>
 
</body>
</html>

تحريك العناصر <div> للأعلى، إذ يفترض أن تكتمل الحركة في غضون 200 ميلي ثانية. سيظهر تنبيه حالما تنتهي الحركة:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>slideUp مثالٌ عم استعمال</title>
  <style>
 div {
   margin: 2px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <button>إخفاء العنصر الأول</button>
  <input type="text" value="العنصر الأول">
</div>
 
<div>
  <button>إخفاء العنصر الثاني</button>
  <input type="text" value="العنصر الثاني">
</div>
 
<div>
  <button>إخفاء العنصر الثالث</button>
  <input type="text" value="العنصر الثالث">
</div>
 
<div id="msg"></div>
 
<script>
$( "button" ).click(function() {
  $( this ).parent().slideUp( "slow", function() {
    $( "#msg" ).text( $( "button", this ).text() + " قد اكتمل." );
  });
});
</script>
 
</body>
</html>

مصادر