и для чего вот это условие:
else { clickByHideElems( $children, k ); } |
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 ); } } вот в таком виде вроде бы работает. спасибо!!! |
только всё равно поясните, пожалуйста, для чего последний else?
|
это в том случае сработает, когда хайдер не в верхнем диве?
|
код в 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]; }); } |
ок, спасибо всем большое за помощь. отдельный респект Никите. код итоговой функции:
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 ); } } |
не поверите, но это оказалось еще не всё. есть такая проблема: при нажатии на кнопку «назад» браузера происходит переход на прошлую страницу, а надо бы просто отменять последний открытый хайдер. подскажите, пожалуйста, каким образом это реализовать?
|
History API. Правда поддержка браузерами минимальная пока.
|
ну мне как раз нужна полная поддержка))
есть идея сделать через hashchange и onhashchange (IE). только я не знаю каким образом отличить изменение хэша при нажатии на «назад» от изменения при клике. |
Проверять location.hash через setTimeout или setInterval.
|
Часовой пояс GMT +3, время: 23:43. |