Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Скрытие/раскрытие объектов DOM (https://javascript.ru/forum/jquery/9815-skrytie-raskrytie-obektov-dom.html)

Юрий Шу 07.06.2010 10:31

Скрытие/раскрытие объектов 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;
	});

Подскажите пожалуйста.

exec 07.06.2010 11:03

Не проверял.

var current = null;
$('#blocks div').each(function (i) {
current = this;
setTimeout(function () {
$(current).slideDown(1000, function () {
$(this).slideUp(1000);
});
}, i * 2000);
});


DIV'-ы обрамить в ещё один див с id="blocks".

Юрий Шу 07.06.2010 11:25

exec,
действия скрытия/появления происходят почему-то только с одним блоком, выходит each не переключает блоки?

exec 07.06.2010 11:49

Юрий Шу, Вы так делали?

<div id="blocks">
  <div id="one"></div>
  <div id="two"></div>
  <div id="three"></div>
</div>

Юрий Шу 07.06.2010 11:52

Да
$("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.