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

من موسوعة حسوب
اذهب إلى: تصفح، ابحث

‎.mouseover( handler )‎

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

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

الوصف

يربط هذا التابع معالج حدث معين مع الحدث mouseover (الدخول حيِّز عنصر) في JavaScript، أو يستدعي ذلك الحدث لتطبيقه على عنصر.

‎.mouseover( handler )‎

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

handler

دالة من الشكل Function( Event eventObject )‎، وتُمثِّل الدالة التي ستُنفَّذ في كل مرة يُستدعى فيها الحدث.

‎.mouseover( [eventData ], handler )‎

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

eventData

أي شيء (وهو نوع افتراضي مُستخدَم في jQuery للإشارة إلى إمكانيَّة استخدام أي نوع)، ويُمثِّل كائنًا يحتوي على البيانات التي ستُمرَّر إلى مُعالِج الأحداث.

handler

دالة من الشكل Function( Event eventObject )‎، وتُمثِّل الدالة التي ستُنفَّذ في كل مرة يُستدعى فيها الحدث.

‎.mouseover()‎

أُضيف مع الإصدار: 1.0، ولا يقبل هذا الشكل من التابع أي وسائط.

هذا التابع هو اختصار للتابع ‎.on( "mouseover", handler )‎ في شكله الأول والثاني، واختصار للتابع ‎.trigger( "mouseover" )‎ في شكله الثالث.

يُرسَل الحدث mouseover إلى عنصرٍ عندما يدخل مؤشِّر الفأرة حيِّزه. يمكن أن تستقبل جميع عناصر HTML هذا الحدث.

انظر مثلًا إلى شيفرة HTML التالية:
<div id="outer">
  عنصر خارجي
  <div id="inner">
    عنصر داخلي
  </div>
</div>
<div id="other">
  استدعِ معالج الحدث
</div>
<div id="log"></div>
يمكن أن يُربط معالج الحدث مع أي عنصر:
$( "#outer" ).mouseover(function() {
 $( "#log" ).append( "<div>استعدعي معالج الحدث بنجاح</div>" );
});
عندما يدخل مؤشِّر الفأرة حيِّز العنصر <div> ذي المعرِّف outer، فستضاف الرسالة إلى العنصر <div id="log"‎>. يمكن أيضًا استدعاء الحدث عند الضغط على عنصر آخر:
$( "#other" ).click(function() {
 $( "#outer" ).mouseover();
});
بعد تنفيذ هذه الشيفرة، ستُضاف الرسالة أيضًا بالضغط على "استدعِ معالج الحدث".

يمكن أن يسبب هذا النوع من الأحداث بعض التعقيدات والمشكلات المتعلقة بانتشار الحدث (bubbling). فعندما يدخل مؤشِّر الفأرة مثلًا حيِّز العنصر Inner في المثال السابق، يُرسل الحدث mouseover إليه ثمَّ تُعاد الكرَّة ذاتها بالنسبة للعنصر الأب له وهو outer؛ هذا يؤدي إلى استدعاء معالج الحدث mouseout المرتبط مع العنصر في أوقات غير مناسبة. راجع توثيق التابع ‎.mouseenter()‎ فهو البديل الأنسب في مثل هذه الحالات.

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

لمَّا كان التابع ‎.mouseover()‎ اختزالٌ للتابع ‎.on( "mouseover", handler )‎، فمن الممكن استعمال ‎.off( "mouseover" )‎ لإزالة الحدث mouseover أي عملية معاكسة لما سبق.

أمثلة

إظهار عدد مرات استدعاء الحدث mouseover والحدث mouseenter. يُطلَق الحدث mouseover عندما يدخل مؤشِّر الفأرة إلى داخل العنصر الابن أيضًا، بينما يُطلق الحدث mouseenter عندما يدخل المؤشِّر حدود العنصر فقط:
<!doctype html>
<html lang="ar">
<head>
  <meta charset="utf-8">
  <title>mouseover مثالٌ عن استعمال التابع</title>
  <style>
  div.out {
    width: 40%;
    height: 120px;
    margin: 0 15px;
    background-color: #d6edfc;
    float: left;
  }
  div.in {
    width: 60%;
    height: 60%;
    background-color: #fc0;
    margin: 10px auto;
  }
  p {
    line-height: 1em;
    margin: 0;
    padding: 0;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div class="out overout">
  <span>حرك مؤشر الفأرة</span>
  <div class="in">
  </div>
</div>
 
<div class="out enterleave">
  <span>حرك مؤشر الفأرة</span>
  <div class="in">
  </div>
</div>
 
<script>
var i = 0;
$( "div.overout" )
  .mouseover(function() {
    i += 1;
    $( this ).find( "span" ).text( "mouse over x " + i );
  })
  .mouseout(function() {
    $( this ).find( "span" ).text( "mouse out " );
  });
 
var n = 0;
$( "div.enterleave" )
  .mouseenter(function() {
    n += 1;
    $( this ).find( "span" ).text( " دخل المؤشر عدد" + n + " من المرات" );
  })
  .mouseleave(function() {
    $( this ).find( "span" ).text( "غادر المؤشر" );
  });
</script>
 
</body>
</html>

مصادر