Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 29.06.2011, 15:48
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

и для чего вот это условие:

else {
    clickByHideElems( $children, k );
}
Ответить с цитированием
  #22 (permalink)  
Старый 29.06.2011, 15:57
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

function clickByHideElems( elems, k ) {
		
    	$children = $(elems).children();
    	if( k == 0 ) {
    		$hideNext = $children.find(".hide-next").filter(function(){ return $(this).text() === hashEls[k]; });
    	} else {
    		$hideNext = $children.filter(".hide-next").filter(function(){ return $(this).text() === hashEls[k]; });
    	}
    	if ($hideNext.length) {
        	$hideNext.click();
        	console.info(k);
        	if ( k < hashEls.length - 1 ) {
        		k = k+1;
            	clickByHideElems($hideNext.next("div"), k);
       		}
    	} else {
        	clickByHideElems( $children, k );
    	}
}


вот в таком виде вроде бы работает. спасибо!!!
Ответить с цитированием
  #23 (permalink)  
Старый 29.06.2011, 15:58
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

только всё равно поясните, пожалуйста, для чего последний else?
Ответить с цитированием
  #24 (permalink)  
Старый 29.06.2011, 16:00
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

это в том случае сработает, когда хайдер не в верхнем диве?
Ответить с цитированием
  #25 (permalink)  
Старый 01.07.2011, 00:48
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

код в else сработает, когда будет нулевая длина $hideNext

т.е. если этот код ничего не найдет

if( k == 0 ) {
    		$hideNext = $children.find(".hide-next").filter(function(){ return $(this).text() === hashEls[k]; });
    	} else {
    		$hideNext = $children.filter(".hide-next").filter(function(){ return $(this).text() === hashEls[k]; });
    	}
Ответить с цитированием
  #26 (permalink)  
Старый 05.07.2011, 13:09
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

ок, спасибо всем большое за помощь. отдельный респект Никите. код итоговой функции:

function clickByHideElems( elems, k ) {
		
    	$children = $(elems).children();
    	if( k == 0 ) {
    		$hideNext = $children.find(".hide-next").filter(function(){ return $(this).text() === hashEls[k]; });
    	} else {
    		$hideNext = $children.filter(".hide-next").filter(function(){ return $(this).text() === hashEls[k]; });
    	}
    	if ($hideNext.length) {
        	$hideNext.click();
        	if ( k < hashEls.length - 1 ) {
        		k = k+1;
            	clickByHideElems($hideNext.next("div"), k);
       		} else {
       			destination = $hideNext.offset().top;
        		$('html,body').animate({ scrollTop: destination }, 1000);
       		}
    	} else {
    	       	clickByHideElems( $children, k );
    	}
}
Ответить с цитированием
  #27 (permalink)  
Старый 05.07.2011, 19:27
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

не поверите, но это оказалось еще не всё. есть такая проблема: при нажатии на кнопку «назад» браузера происходит переход на прошлую страницу, а надо бы просто отменять последний открытый хайдер. подскажите, пожалуйста, каким образом это реализовать?
Ответить с цитированием
  #28 (permalink)  
Старый 05.07.2011, 20:20
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

History API. Правда поддержка браузерами минимальная пока.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #29 (permalink)  
Старый 06.07.2011, 12:23
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

ну мне как раз нужна полная поддержка))

есть идея сделать через hashchange и onhashchange (IE). только я не знаю каким образом отличить изменение хэша при нажатии на «назад» от изменения при клике.
Ответить с цитированием
  #30 (permalink)  
Старый 07.07.2011, 18:10
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Проверять location.hash через setTimeout или setInterval.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выбрать следующий элемент с классом zsaz jQuery 1 02.03.2011 11:59
Найти элемент ниже скрипта Vladislav_V Javascript под браузер 8 12.01.2011 08:47
Найти элемент "A" по "HREF" Nitrogen jQuery 4 27.10.2010 19:19
Отладка. При клике на элемент найти функцию-обработчик в коде romangaag Events/DOM/Window 3 24.10.2010 03:09
Найти элемент под курсором Гость Элементы интерфейса 16 11.12.2009 14:08