Переход по странице на span.click()
У меня происходит эта странная вещь: при нажатии на пролеты в навигации контент должен переключаться. Все работает, за исключением того, что когда вы щелкаете по промежутку, страница переходит к нему (тогда промежуток будет прямо вверху). Все, что я нахожу о переходах по страницам, касается тегов привязки и возврата false; но ничего о пролетах. По моему мнению, переключение контента не может быть виновато, потому что никогда не бывает только одного div, у которого есть display: none (и в этом случае страница должна переходить наверх, а не переходить на промежуток, верно?) кажется, что любые действия не работают на пролетах.
$("#subnavi span").click(function(){
$("#inner-content div:visible").animate({height: "toggle", opacity: "toggle"}, "slow");
$("#content-"+this.id).animate({height: "toggle", opacity: "toggle"}, "slow");
$("#subnavi span").attr("class", "");
$(this).attr("class", "active");
});
Если объяснение сбивало с толку, перейдите сюда: http://gaming-siblings.com/v2.0/ и нажмите Статистика в навигации слева. Страница перейдет к промежутку, который вы только что щелкнули, и немного прокрутится назад из-за высоты div. Почему он прыгает на пролет?
Это, вероятно, не странно, но разумно. Я просто не понимаю:-)
Я пробовал это в течение 2 дней, делая перерывы, потому что это в основном помогает, но не в этот раз.
Есть идеи / решения? Как уже упоминалось, верните ложь; или warnDefault() не работало, когда я пытался (потому что я думаю, что это пролеты).
1 ответ
Я заметил эту дополнительную строку в вашем click()
функция:
document.location.hash = "#" + this.id;
Это и есть причина перехода - вы добавляете хеш к URL-адресу страницы, чтобы страница автоматически прокручивалась до этого якоря (в этом случае она будет прокручиваться до элемента, который был нажат, так как вы добавляете его id
).
На самом деле я не знаю обходного пути, который бы полностью не перезагрузил страницу. Лучше всего просто использовать отдельные страницы или вообще не использовать хеш.