2010-01-15 2 views
0

У меня есть страница вещей, которая выглядит так (и да, я включил скриптовые javascripts, потому что переключатель действительно делает работа):Длинная страница divs: Используйте Effect.toggle, чтобы развернуть div внизу: Прокрутка страницы назад

<html> 

<div id="container"> 
    <div id="thing1" class="thing" > 
     <p>Some visible stuff 1</p><a href="#" onclick="Effect.toggle('extra1');">More1</a> 
     <div id="extra1" style="display:none;"> 
     <p>Some extra and initially invisible stuff</p> 
     </div> 
    </div> 

    <div id="thing2" class="thing"> 
     <p>Some visible stuff 2</p><a href="#" onclick="Effect.toggle('extra2');">More2</a> 
     <div id="extra2" style="display:none;"> 
     <p>Some extra and initially invisible stuff</p> 
     </div> 
    </div> 

    <!-- 96 more entities of class="thing" --> 

    <div id="thing99" class="thing"> 
     <p>Some visible stuff 99</p><a href="#" onclick="Effect.toggle('extra99');">More99</a> 
     <div id="extra99" style="display:none;"> 
     <p>Some extra and initially invisible stuff</p> 
     </div> 
    </div> 
</div> 
</html> 

Когда я нажимаю на «More99» ссылка на ид = «thing99», который является путь вниз в нижней части страницы, то ДИВ при ид = «extra99» выглядит как положено, но страница затем страница автоматически прокручивается назад.

Когда я нажимаю ссылку «More1» наверху, она остается сосредоточенной вверху.

Есть ли в любом случае, что я могу удержать страницу от прокрутки назад и/или переориентировать ее обратно туда, где я только что нажал? Я не хочу прокручивать назад и выяснить, какой из них я только что сделал видимым.

ответ

-1

Jonathan & Tatu начал меня на правильном пути. Я попытался «вернуть ложь», и он работал некоторое время.

С понятием «return false» в руке я искал GOogle и наткнулся на this page для hrefs и вернул false.

Этот тег "#" продолжал возвращать меня в начало страницы. Я попробовал href = "" без "return false", и он работал по желанию, но он случайно перезагрузил страницу.

Следующее решение дал мне то, что я не хотел последовательно:

<a href="" onclick="Effect.toggle('extra99'); return false;">More99</a> 

Все работало как хотелось бы, и нет случайных перезагрузок страниц.

+0

Jay, вам не нужно иметь пустое значение 'href', если вы используете' return false'. – Sampson

+0

Вот что я выдвинул гипотезу. Однако по какой-то причине мне все равно пришлось обойтись. –

2

Попробуйте return false; после вашего звонка Effect.toggle();.

<a href="#" onclick="Effect.toggle('extra99'); return false;">More99</a> 

Это не идеальный способ справиться с этим, но он должен решить вашу непосредственную проблему. В идеале вы удаляете весь свой Javascript из своего HTML-кода и уничтожаете все атрибуты onclick, обрабатывая все из удаленного блока Javascript.

+3

Причина, по которой вам нужно вернуть false, заключается в том, что в противном случае браузер продолжит выполнение действия по умолчанию для этой ссылки, которое должно следовать за '#', которое совпадает с верхней частью страницы. –

+0

Спасибо, Джонатан. Это привело меня к правильному пути. –

+0

Спасибо Тату. Это именно то, что я узнал. –