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

من موسوعة حسوب
مراجعة 21:27، 28 مايو 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (هذه الصفحة من مساهمات عدنان أمزيان.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

()hide.

الوصف

يخفي هذا التابع كل العناصر المتطابقة.

‎.hide()‎

أضيف مع الإصدار: 1.0. لا يقبل هذا الشكل من التابع أي معاملات.

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

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

duration

عدد أو سلسلة نصية تمثل كم من الوقت الذي ستستغرقه عملية إخفاء العنصر، وقيمته الافتراضية هي 400.

complete

دالة تُستدعى بعد انتهاء حركة الإخفاء. تُستدعى مرةً لكل عنصر يراد إخفاؤه.

‎.hide( 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

دالة تُستدعى عندما تنتهي الحركة المطبقة على العنصر.

start

دالة تُستدعى عندما تبدأ الحركة المطبقة على العنصر. (أضيف مع الإصدار 1.8).

done

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

fail

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

always

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

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

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

duration

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

easing

سلسلة نصية تحدد أي دالة تسارع ستُسخدم خلال الحركة. القيمة الافتراضية هي swing.

complete

دالة تستدعى عندما تنتهي الحركة المطبقة على العنصر، وتستدعى مرةً على كل عنصر متطابق.

استعمال التابع ‎.hide()‎ دون معاملات هو أبسط طريقة لإخفاء عنصر معين مثل:

$( ".target" ).hide();

ستختفي العناصر المطابقة مباشرة بلا حركة. هذا مكافئ لاستدعاء ‎.css( "display", "none" )‎، باستثناء أن قيمة الخاصية display تخزن في ذاكرة البيانات المؤقتة في jQuery وبهذا يمكن استعادة قيمتها الأولية. إن كانت قيمة الخاصية display هي القيمة inline لعنصر ما وأُخفي ثم أُظهر مرة أخرى، فسيُظهر آنذاك بنفس قيمة خاصية display الأولية والتي هي inline.

عندما تُمرَّر قيمة المعامل duration أو كائن من نوع object أو دالة complete إلى التابع ‎.hide()‎، فيصبح هذا التابع تابعًا حركيًا. يحرك التابع ‎.hide()‎ طول وعرض وشفافية العناصر المطابقة في الوقت ذاته. عندما تصل هذه الخاصيات إلى القيمة 0، تضبط الخاصية display إلى القيمة none لضمان أنه لم يعد للعنصر أي تأثير على بنية الصفحة.

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

يجب الإنتباه إلى أن التابع ‎.hide()‎ سيُنفَّذ مباشرةً ولن ينتظر طابور انتظار الحركات إن لم تُمرر قيمة المعامل duration له أو إن مُررت ولكن كانت 0.

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

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

ملاحظة: يمكن أن يسبب هذا التابع مشاكل في الأداء، خصوصًا عندما يُستعمل مع مجموعة من العناصر. إن واجهت مشاكل من هذا القبيل، فاستعمل أدوات قياس الأداء كي تعرف هل فعلًا التابع ‎.hide()‎ هو المسبب لتلك المشاكل. أضف إلى ذلك أنه يمكن أن يُسبب هذا التابع مشاكل مع التصميم المتجاوب إذا ما كانت قيمة الخاصية display تتغير بتغير قياس الشاشة.

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

<div id="clickme">
  Click here
</div>
<img id="book" src="book.png" alt="" width="100" height="123">
// إخفاء العنصر ببطئ
$( "#clickme" ).click(function() {
  $( "#book" ).hide( "slow", function() {
    alert( "Animation complete." );
  });
});

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

يمكن إيقاف كل تأثيرات jQuery، من ضمنها ‎.hide()‎، باستعمال الضبط jQuery.fx.off = true والذي يغير بفاعلية المعامل duration إلى 0. لمعلومات أكثر، إطلع على  jQuery.fx.off.

أمثلة

إخفاء كل الفقرات ثم إخفاء الرابط عند الضغط عليه:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>hide demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p>Hello</p>
<a href="#">Click to hide me too</a>
<p>Here is another paragraph</p>
 
<script>
$( "p" ).hide();
$( "a" ).click(function( event ) {
  event.preventDefault();
  $( this ).hide();
});
</script>
 
</body>
</html>

إخفاء كل الفقرات المرئية ببطء، إذ ستكتمل الحركة بعد مرور 600 ميلي ثانية:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>hide demo</title>
  <style>
  p {
    background: #dad;
    font-weight: bold;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<button>Hide 'em</button>
<p>Hiya</p>
<p>Such interesting text, eh?</p>
 
<script>
$( "button" ).click(function() {
  $( "p" ).hide( "slow" );
});
</script>
 
</body>
</html>

إخفاء كل عناصر <span> بشكل سريع، إذ تستغرق كل حركة 200 ميلي ثانية. عندما تنتهي حركة معينة تبدأ التي تليها:

!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>hide demo</title>
  <style>
  span {
    background: #def3ca;
    padding: 3px;
    float: left;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<button id="hider">Hide</button>
<button id="shower">Show</button>
<div>
  <span>Once</span> <span>upon</span> <span>a</span>
  <span>time</span> <span>there</span> <span>were</span>
  <span>three</span> <span>programmers...</span>
</div>
 
<script>
$( "#hider" ).click(function() {
  $( "span:last-child" ).hide( "fast", function() {
    // Use arguments.callee so we don't need a named function
    $( this ).prev().hide( "fast", arguments.callee );
  });
});
$( "#shower" ).click(function() {
  $( "span" ).show( 2000 );
});
</script>
 
</body>
</html>

إخفاء عناصر <div> عند الضغط عليها (تستغرق الحركة ثانيتين)، ثم حذف العنصر بعد ذلك من الصفحة. جرب الضغط على أكثر من عنصر <div> في نفس الوقت:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>hide demo</title>
  <style>
  div {
    background: #ece023;
    width: 30px;
    height: 40px;
    margin: 2px;
    float: left;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div></div>
 
<script>
for ( var i = 0; i < 5; i++ ) {
  $( "<div>" ).appendTo( document.body );
}
$( "div" ).click(function() {
  $( this ).hide( 2000, function() {
    $( this ).remove();
  });
});
</script>
 
</body>
</html>

مصادر