Скрытие/раскрытие объектов 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, время: 14:24. |