Вопрос

Есть ли способ заставить 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;
    }
});

Есть ли способ сделать это или я должен сделать это сам?

Это было полезно?

Решение

Разделить логику внутри mouseout в другую функцию. в mouseout Даже назовите эту функцию setTimeout("myMouseOut", 500). Анкет И вы можете объединить mouseover событие с clearTimeout() Чтобы сбросить таймер, если пользователь перемещается в новый элемент.

Другие советы

Вы всегда можете обернуть свою логику в setTimeout() функция

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

Вы можете проверить График плагина Позволяет определить некоторые VAR, которые помогают с взаимодействием мыши/вне

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top