Скрытие/раскрытие объектов DOM
Здравствуйте. Написал скрипт, который раскрывает/скрывает блоки поочередно.
<a href="#">Click here</a> <div id="one"></div> <div id="two"></div> <div id="three"></div> $(document).ready(function (){ $("a").toggle( function () { $("#three").slideUp(); }, function () { $("#two").slideUp(); }, function () { $("#one").slideUp(); }, function () { $("#one").slideDown(); }, function () { $("#two").slideDown(); }, function () { $("#three").slideDown(); } ); return false; }); Как можно переписать скрипт, чтобы он делал то же самое, но с любым количеством блоков? Пробую, используя each, но не получается… Вот то, что есть на данный момент. $(document).ready(function (){ var obj = $("div"); $("a").toggle( $.each(obj, function(i){ function () { $(obj).eq(i).slideUp(); } }); ); return false; }); Подскажите пожалуйста. |
Не проверял.
var current = null; $('#blocks div').each(function (i) { current = this; setTimeout(function () { $(current).slideDown(1000, function () { $(this).slideUp(1000); }); }, i * 2000); }); DIV'-ы обрамить в ещё один див с id="blocks". |
exec,
действия скрытия/появления происходят почему-то только с одним блоком, выходит each не переключает блоки? |
Юрий Шу, Вы так делали?
<div id="blocks"> <div id="one"></div> <div id="two"></div> <div id="three"></div> </div> |
Да
$("a").click(function(){ var current = null; $('#blocks div').each(function (i) { current = this; setTimeout(function () { $(current).slideDown(1000, function () { $(this).slideUp(1000); }); }, i * 2000); }); return false; }); <a href="#">Click here</a> <div id="blocks"> <div id="one"></div> <div id="two"></div> <div id="three"></div> </div> |
Часовой пояс GMT +3, время: 11:20. |