Как отложить оповещение? - PullRequest
       14

Как отложить оповещение?

4 голосов
/ 23 декабря 2010

Я пытаюсь отложить предупреждение, но не могу заставить его работать, оно всегда всплывает, когда #foo наводится и увеличивается в размере:

$('#foo').hover(function() {
 $(this).animate({width :'400px'}, 'slow');
},
function() {
 $(this).delay(2000).animate({width :'40px'}, 'slow');
alert('Im an alert message');
});

но я хочу, чтобы он показывался только после того, как #foo вернулось к исходному состоянию ...

Ответы [ 4 ]

6 голосов
/ 23 декабря 2010

Как насчет использования обратного вызова ??

$('#foo').hover(function () {
    $(this).animate({
        width: '400px'
    }, 'slow');
}, function () {
    $(this).delay(2000).animate({
        width: '40px'
    }, 'slow', function () { //callback function, which runs very next to .animate()
        alert('Im an alert message');
    });
});
2 голосов
/ 23 декабря 2010

Вы должны сделать это в обратном вызове.Это функция, которая будет вызвана после завершения анимации:

$(this).delay(2000).animate({width :'40px'}, 'slow', function(){
    alert("I'm an alert message");
});

См. animate API .

1 голос
/ 23 декабря 2010

похоже, что вы хотите использовать функцию обратного вызова для функции анимации?

http://api.jquery.com/animate/

$(this).delay(2000).animate({width :'40px'}, 
    'slow',
    function () {
        alert('Im an alert message');
    }
);
0 голосов
/ 23 декабря 2010

Используйте функцию setTimeout: http://www.w3schools.com/js/js_timing.asp

$('#foo').hover(function() {
 setTimeout(function(){$(this).animate({width :'400px'}, 'slow');}, 3000);
}

Приведенный выше код должен задерживаться на 3 секунды.

...