ручное затухание (по щелчку) с автоматическим (через несколько секунд) - PullRequest
0 голосов
/ 29 мая 2009
 $('<div class="error"></div>').html('<h2>(click here to dismiss)</h2>').insertAfter($('#someid')).fadeIn('slow').animate({ opacity: 1.0 }, 1000).click(function() {
       $(this).fadeOut('slow', function() {
           $(this).remove()
       })
   });

есть ли способ объединить это с:

$('#someid').animate({opactiy: 1.0 } fadeOut('slow', function() {
            $(this).remove()
        });

другими словами, чтобы объединить это, поэтому, когда они не щелкают по нему, оно все равно исчезнет через столько секунд ..

1 Ответ

2 голосов
/ 29 мая 2009

Я не уверен, есть ли хороший способ объединить все это в одну команду. Однако вы можете использовать setTimeout в отдельной строке, чтобы добиться того же эффекта в другом выражении. Например, после вашего первого заявления:

setTimeout(function() {
    if ($('#someid').css('opacity') == 1.0) {
        // Fade out has not started yet
        $('#someid').animate({opactiy: 1.0 } fadeOut('slow', function() {
            $(this).remove()
        });
    }
}, 3000); // setTimeout counted in ms, not seconds

Я согласен, что было бы более элегантно объединить все воедино, но я не знаю хорошего способа сделать это.

В качестве дополнительного примечания, вы можете иметь столько пробелов, сколько хотите между именами методов в Javascript, чтобы вы могли разбить исходное утверждение на несколько строк для лучшей читаемости, например

$('<div class="error"></div>')
    .html('<h2>(click here to dismiss)</h2>')
    .insertAfter($('#someid'))
    .fadeIn('slow')
    .animate({ opacity: 1.0 }, 1000)
    .click(function() {
   $(this).fadeOut('slow', function() {
       $(this).remove()
   })

});

Но это вопрос предпочтения.

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