Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.06.2010, 10:31
Аспирант
Отправить личное сообщение для Юрий Шу Посмотреть профиль Найти все сообщения от Юрий Шу
 
Регистрация: 27.05.2010
Сообщений: 42

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

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

Последний раз редактировалось Юрий Шу, 07.06.2010 в 10:39.
Ответить с цитированием
  #2 (permalink)  
Старый 07.06.2010, 11:03
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Не проверял.

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


DIV'-ы обрамить в ещё один див с id="blocks".
Ответить с цитированием
  #3 (permalink)  
Старый 07.06.2010, 11:25
Аспирант
Отправить личное сообщение для Юрий Шу Посмотреть профиль Найти все сообщения от Юрий Шу
 
Регистрация: 27.05.2010
Сообщений: 42

exec,
действия скрытия/появления происходят почему-то только с одним блоком, выходит each не переключает блоки?
Ответить с цитированием
  #4 (permalink)  
Старый 07.06.2010, 11:49
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

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

<div id="blocks">
  <div id="one"></div>
  <div id="two"></div>
  <div id="three"></div>
</div>
Ответить с цитированием
  #5 (permalink)  
Старый 07.06.2010, 11:52
Аспирант
Отправить личное сообщение для Юрий Шу Посмотреть профиль Найти все сообщения от Юрий Шу
 
Регистрация: 27.05.2010
Сообщений: 42

Да
$("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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос о циклических ссылках (JavaScript -> Dom -> JavaScipt) BlueIce Events/DOM/Window 10 17.02.2010 21:58
Быстрый поиск объектов Shasoft Общие вопросы Javascript 7 30.07.2009 05:28
Обращение к layer в DOM Asd Элементы интерфейса 2 01.07.2009 23:16
Работа с DOM на стороне сервера AlexAndreev Серверные языки и технологии 7 27.05.2009 21:39
Сохранение дерева DOM в файл Александр1985 Общие вопросы Javascript 7 24.01.2009 23:15