سؤال

هل هناك طريقة لجعل jQuery تنتظر بعض الوقت قبل إطلاق حدث Mouseout؟

إنه يتم إطلاق النار في وقت مبكر جدًا في الوقت الحالي ، وأفضل الانتظار 500 مللي ثانية قبل أن يقيم الماوس. مثال على الرمز الذي أستخدمه أدناه.

$('.under-construction',this).bind({
    mousemove: function(e) {
        setToolTipPosition(this,e);
        css({'cursor' : 'crosshair' });
    },
    mouseover: function() {
        $c('show!');
        showUnderConstruction();
    },
    mouseout: function() {
        $c('hide!');
        hideUnderConstruction();
    },
    click: function() {
        return false;
    }
});

هل هناك طريقة jQuery للقيام بذلك أم سأضطر إلى القيام بذلك بنفسي؟

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

المحلول

تقسيم المنطق داخل mouseout في وظيفة أخرى. في ال mouseout حتى استدعاء هذه الوظيفة مع أ setTimeout("myMouseOut", 500). ويمكنك الجمع بين mouseover حدث مع clearTimeout() لإعادة ضبط المؤقت إذا انتقل المستخدم إلى عنصر جديد.

نصائح أخرى

يمكنك دائمًا لف منطقك في setTimeout() وظيفة.

mouseout: function() {
  setTimeout(function(){
    $c('hide!');
    hideUnderConstruction();
  }, 500);
}

يمكنك التحقق من المكون الإضافي hovernintent يتيح لك تحديد بعض الأسكواشات التي تساعد في التفاعلات/الخروج

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