и для чего вот это условие:
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, время: 12:37. |