Почему страница прокручивается вверх при нажатии href = "#"? - PullRequest
2 голосов
/ 13 ноября 2010

У меня есть гиперссылка как таковая <a href="#" id="someID">Link</a>, что мне нужно прокрутить страницу вниз, чтобы добраться до. Эта гиперссылка существует только для запуска Ajax-запроса. Когда я нажимаю эту гиперссылку, страница прокручивается до самого верха! Как я могу это исправить? Я использую #, потому что все остальное перезагрузит страницу. Я использую это неправильно?

EDIT:

Мне сложно объяснить, что я делаю, поэтому, если вы запустите это, вы получите ту же проблему, с которой я сталкиваюсь. Даже после возвращения false.

   <html>
    <head>
    </head>
    <body>
        <a href="#" id="link" style="position:absolute; top:200%;">Link</a>
    </body>
</html>
<script type="text/javascript">
    document.getElementById("link").onmousedown = function(){
        this.style.color="red";
        return false;
    }
</script>

Ответы [ 5 ]

7 голосов
/ 13 ноября 2010

добавить return false; к назначенному обработчику событий:

 el.onclick = function() {
   // do your code
   return false;
 }

Или, возможно, более элегантным способом

function(e) {
   e = e || window.event;
   if ( e.preventDefault ) e.preventDefault()
   else e.returnValue = false;
}
6 голосов
/ 13 ноября 2010

Нужно попробовать javascript:void(0) вместо #?

Источник:

Какое значение "href" следует использовать для ссылок JavaScript, "#" или "javascript: void (0)"?

Edit:

Причина:

Запрещает браузеру обновлять или переходить на другую страницу.

http://www.tizag.com/javascriptT/javascriptvoid.php

4 голосов
/ 13 ноября 2010

Браузер пытается перейти на якорь с именем #.Там нет ни одного, поэтому он прокручивается до самого верха.Чтобы избежать такого поведения, делайте то, что упоминал медер.

1 голос
/ 13 ноября 2010

вам нужно остановить распространение события при щелчке по метке привязки.

0 голосов
/ 14 ноября 2010

Браузер читает # как привязку, у вас в эфире есть ссылка с идентификатором «someID» в верхней части вашей страницы или вообще без идентификатора, и в этом случае он просто перейдет в верхнюю часть страницы. по умолчанию (это похоже на ваш случай). Вам придется заменить знак # чем-то, чтобы остановить это. Я не уверен, что будет лучше, но ответ Эвана Мулавски может сработать. Я не знаю, позволит ли это по-прежнему правильно запускать ваш ajax-код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...