jQuery تنشيط وظيفة الماوس فقط إذا كان الماوس يحمل على العنصر

StackOverflow https://stackoverflow.com/questions/1666615

سؤال

أود تنشيط .mouseover وظيفة فقط إذا كان الماوس يضع على عنصر "الزناد" لفترة محددة سلفا (على سبيل المثال 500 مللي ثانية).

على سبيل المثال

$('.featured').mouseover(function () {
      $('.feat-txt').fadeOut("fast");
    });

فقط إذا تم وضع الفأرة على عنصر .Featured لعنصر ما لا يقل عن 500 ميلي ثانية، فيمكن أن تبدأ الوظيفة ويمكن .Feat-TXT يمكن أن تتلاشى. الماوس بسيط فوق (مجرد حركة سريعة) على هذا العنصر لا ينشط الوظيفة.

أي اقتراح حول كيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

لقد استخدمت نية تحوم في الماضي - جيد جدا ويفعل ما أظن بعد:

http://cherne.net/brian/resources/jquery.hovertent.html.

نصائح أخرى

هل مثل هذا:

  • اعتراض أحداث onmouseover على هذا العنصر. في وظيفة رد الاتصال لا تفعل أي شيء؛ بدلا من ذلك، اتصل بوظيفة أخرى مع التأخير الذي تريده، على سبيل المثال في النموذج الأولي الذي تقوم به مع Workname.delay (500)

  • في الوظيفة الثانية، تحقق مما إذا كان الماوس لا يزال على العنصر باستخدام أي jQuery يمنحك الحصول على إحداثيات الماوس وإحداثيات العناصر. إذا كان الماوس لا يزال هناك، افعل ما تريد القيام به.

لن يعمل هذا على التأخير الطويل لأن المستخدم يمكن أن يتحرك الماوس الخارجي والخلف داخل العنصر وسوف لا يزال اسم الدالة النار.

إذا كنت لا تمانع في قول ذلك، فهذه فكرة سيئة للغاية.

في الواقع، وجدت أيضا هذا البرنامج المساعد Hover هذا. http://blog.threedubmedia.com/2008/08/eventspecialhover.html.

لا يستخدم مدة انتظار Mouseover، ولكنه يستخدم سرعة الماوس في إطار زمني محدد.

يمكن رؤية النتيجة في المربعات الثلاث المعروضة على الجانب الأيمن من هذه الصفحة: http://www.splendida.it. (أنا أعمل حاليا على ذلك).

يبدو لطيف بالنسبة لي. عندما يقفز الماوس بسرعة من أول إلى المربع الثالث، لا يحدث شيء، حتى لو يمر الماوس فوق العنصر الثاني.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top