Я не уверен, есть ли хороший способ объединить все это в одну команду. Однако вы можете использовать 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()
})
});
Но это вопрос предпочтения.