Очередность show/hide
Всем привет.
Два эффекта выполняются одновременно:
$("#div1").hide();
$("#div2").show();
Подскажите пожалуйста, можно ли сделать так, чтобы сначала выполнялась одна функция (hide) и только после завершения - вторая. |
$("#div1").hide(function() {
$("#div2").show();
});
|
Спасибо.
А возможно ли без взаимной вложенности это реализовать? |
$("#div1").hide(500);
$("#div2").delay(500).show();
В .delay() нужно указать время за которое выполняется первая анимация. |
Работает. Но задержка - это по сути имитация очередности.
Дело в том, что я не знаю заранее сколько эффектов будет в цепочке. Может быть, можно ли сделать что-нибудь, типа
$().animate({}, function(){$("#div1").hide();});
$().animate({}, function(){$("#div2").show();});
ну или выполнить что-то в этом роде... Чтобы эффекты анимации для разных объектов выполнялись друг за другом? |
Цитата:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function() {
var o=$("#test")
o.queue(function (){
$(this).hide(500).dequeue();
});
o.queue(function (){
$(this).show(500).dequeue();
});
});
</script>
</head>
<body>
<div id='test'>Test...</div>
</body>
</html>
|
$.when($('#div1').hide(), $('#div3').hide(), $('#div4').hide()).done(function() {$('#div2').show()});
|
walik, автор просил без вложения эффекты вызывать... ;)
И что это за метод when()? :-? Его описания нет в http://jquery-docs.ru/ :( |
Цитата:
Цитата:
Правильней искать в официальной документации :) |
Цитата:
Цитата:
|
Спасибо за варианты, все работает )
Видимо время отрисовки эффекта hide не учитывается при обработке.
o.queue(function (){$("#div1").hide('slow');});
o.dequeue();
o.queue(function (){$("#div2").slideToggle('slow');});
o.dequeue();
даже при таком варианте div2 появляется до того, как полностью исчезает div1 |
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
</head>
<body>
<style>
div {width: 100px;height: 100px;}
#div1 {background: red;}
#div2 {background: yellow;}
#div3 {background: brown;}
#div4 {background: green;}
#div5 {background: blue;display: none;}
</style>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div>
<div id="div5"></div>
<script>
$.when(
$('#div1').hide(1200),
$('#div2').hide(500),
$('#div3').hide(2500),
$('#div4').hide(1800)
).done(function() {$('#div5').show(1000)});
</script>
</body>
</html>
|
walik, понятно... :yes:
|
Цитата:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
</head>
<body>
<style>
div {width: 100px;height: 100px;}
#div1 {background: red;}
#div2 {background: blue;display: none;}
</style>
<div id="div1"></div>
<div id="div2"></div>
<script>
var o=$("#div1")
o.queue(function (){$("#div1").hide('slow');});
o.queue(function (){$("#div2").slideToggle('slow');});
o.dequeue();
</script>
</body>
</html>
|
тему можно закрывать, пасиба :dance:
|
| Часовой пояс GMT +3, время: 11:37. |