Как правильно настроить «settimeout» для функции jQuery? - PullRequest
0 голосов
/ 08 октября 2009

Я надеюсь, что смогу получить помощь. Я новичок в Jquery и JavaScript, и я застрял с функцией "setTimeout". Я работаю над панелью навигации, и в основном мне нужно, чтобы div (подменю) появлялся, когда «щелкал» по тегу привязки, исчезал, если вы перемещаете мышь к другой навигационной ссылке, и скрываете все вместе, если Мышь оставляет это: вот так:

  1. показать по клику, но скрыть через пару секунд

  2. скрыть, если после того, как мышь покидает div.

Это то, что у меня так далеко:

$("a").click(function() {
    $("#sub_nav").fadeIn(400);
});

$("#sub_nav").mouseleave(function() {
    $(this).fadeOut(0);
});

$("#sub_nav").mouseenter(function() {
    if(this) {
        $(this).show(0);
    } else {
        setTimeout(function() {
            $(this).fadeOut(0);
        }, 2000);
    };
});

Работает как положено, кроме setTimeout.

Ценю всю помощь, которую я могу получить.

1 Ответ

1 голос
/ 08 октября 2009
$("#sub_nav").mouseenter(function() {
    if ( !$(this).is(':animated') ) {
        var el = this;
        setTimeout(function() {
            $(el).fadeOut(0);
        }, 2000);
    }
});

'this' в области действия функции feed - это объект 'window', вам нужно сохранить ссылку на элемент.

Я удалил ваш if (this), потому что он всегда будет иметь значение true, и я не был уверен, что вы отлаживали, но вы можете использовать это в качестве примера, если это не правильное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...