jQuery: كيفية التحقق مما إذا كان العنصر مخفيًا؟ (شرح للمبتدئين)

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا هذا السؤال يهم كل مطور واجهة أمامية

\n\n

تخيل الموقف: أنت تكتب صفحة تفاعلية تحتوي على قائمة منسدلة، نافذة منبثقة، أو أكورديون. المستخدم ينقر على زر، ويجب أن يظهر الكتلة أو تختفي بسلاسة. ولكن ماذا لو حاولت عن طريق الخطأ تحريك عنصر مخفي بالفعل؟ أو العكس، أظهرت شيئًا مرئيًا بالفعل؟ النتيجة — أخطاء، واجهة متقطعة، ومستخدمون محبطون.

\n\n

لهذا السبب، السؤال "How do I check if an element is hidden in jQuery?" هو أحد أكثر الأسئلة شيوعًا على Stack Overflow. تم تقديم أكثر من ألف إجابة عليه، وهذا ليس من قبيل الصدفة. القدرة على تحديد رؤية العنصر بشكل صحيح هي مهارة أساسية ستوفر لك ساعات من التصحيح.

\n\n

في هذه المقالة، سنشرح بالتفصيل كيفية التحقق مما إذا كان العنصر مخفيًا باستخدام jQuery. ستتعرف على المخاطر الخفية، والاختلافات بين display:none و visibility:hidden، وستتعلم كتابة كود موثوق. هيا بنا!

\n\n

الطريقة .is(':hidden') — أداتك الرئيسية

\n\n

أبسط وأشهر طريقة للتحقق مما إذا كان العنصر مخفيًا هي استخدام الطريقة .is() مع المحدد الزائف :hidden. jQuery يوفرها بشكل جاهز.

\n\n

كيف يعمل هذا

\n

المحدد :hidden في jQuery يختار العناصر التي:

\n
    \n
  • تحتوي على خاصية CSS display: none;
  • \n
  • هي عناصر من النوع <input type="hidden">;
  • \n
  • لها عرض وارتفاع يساويان الصفر (مثل width: 0; height: 0);
  • \n
  • هي أحفاد لعنصر أب مخفي (ترث الاختفاء).
  • \n
\n\n

إليك كيف يبدو أبسط فحص:

\n\n
// نتحقق مما إذا كان العنصر ذو المعرف "myDiv" مخفيًا\nif ($('#myDiv').is(':hidden')) {\n    console.log('العنصر مخفي!');\n} else {\n    console.log('العنصر مرئي.');\n}
\n\n

التحقق من الرؤية عبر .is(':visible')

\n

للمنطق المعاكس، استخدم المحدد :visible:

\n\n
if ($('#myDiv').is(':visible')) {\n    console.log('العنصر مرئي على الصفحة.');\n}
\n\n

كلا الأسلوبين يعملان بسرعة وبديهيان. ولكن هناك فارق بسيط: ماذا لو كان العنصر مخفيًا باستخدام visibility: hidden أو opacity: 0؟ jQuery يعتبر هذه العناصر مرئية، وهذا غالبًا ما يكون مفاجأة للمبتدئين.

\n\n

المخاطر الخفية: visibility: hidden و opacity: 0

\n\n

يعتقد العديد من المطورين خطأً أن :hidden يستجيب لأي طريقة لإخفاء العنصر. هذا غير صحيح.

\n\n

مثال مع visibility: hidden

\n

الخاصية visibility: hidden تجعل العنصر غير مرئي، لكنه لا يزال يشغل مساحة على الصفحة. jQuery يعتبر هذا العنصر مرئيًا، لأن أبعاده لا تساوي الصفر.

\n\n
<div id="myBox" style="visibility: hidden;">أنا غير مرئي ولكني أشغل مساحة</div>\n\n<script>\nconsole.log( $('#myBox').is(':hidden') );  // false\nconsole.log( $('#myBox').is(':visible') ); // true\n</script>
\n\n

مثال مع opacity: 0

\n

نفس الشيء ينطبق على الشفافية:

\n\n
<div id="transparentBox" style="opacity: 0;">شفاف، لكنه مرئي بالنسبة لـ jQuery</div>\n\n<script>\nconsole.log( $('#transparentBox').is(':hidden') );  // false\n</script>
\n\n

إذا كان الكود الخاص بك يستخدم fadeIn()/fadeOut() أو تحريك الشفافية، فإن الفحص القياسي :hidden سيخذلك. في مثل هذه الحالات، تحتاج إلى التحقق من خاصية CSS محددة.

\n\n

كيفية التحقق من visibility: hidden أو opacity: 0

\n\n

عندما تحتاج إلى معرفة ما إذا كان العنصر مخفيًا باستخدام هذه الخصائص تحديدًا، استخدم .css():

\n\n

التحقق من visibility

\n
var isVisibilityHidden = ($('#myElement').css('visibility') === 'hidden');\nif (isVisibilityHidden) {\n    console.log('العنصر مخفي عبر visibi                

المدونات

توصيات الكتب