Подтвердить что ты не робот

Href= "#" Не прокручивать

Я новичок в JS - так просто интересно, знаете ли вы, как решить эту проблему.

Ток, который у меня есть в моем коде

<a href='#' class="closeLink">close</a>

Запуск некоторых JS для закрытия окна. Проблема заключается в том, что когда пользователь нажимает на ссылку - href= "#" переводит пользователя в начало страницы, когда это происходит.

Как решить это, чтобы он этого не делал? то есть я не могу использовать someting как onclick = "return false", как я полагаю, это остановит работу JS?

Спасибо

4b9b3361

Ответ 1

Обычный способ сделать это - вернуть false из обработчика javascript. Это предотвратит появление пузырьков и отменяет нормальное действие события. По моему опыту, это обычно поведение, которое вы хотите.

Пример jQuery:

$('.closeLink').click( function() {
      ...do the close action...
      return false;
});

Если вы хотите просто предотвратить нормальное действие, вы можете просто использовать preventDefault.

$('.closeLink').click( function(e) {
     e.preventDefault();
     ... do the close action...
});

Ответ 2

Самый простой способ решить эту проблему - просто добавить другого символа после символа фунта, как это:

<a href='#a' class="closeLink">close</a>

Проблема решена. Да, это было так просто. Некоторые могут ненавидеть этот ответ, но они не могут отрицать, что он работает.

Просто убедитесь, что на самом деле у вас нет раздела, назначенного "a", или он перейдет на эту часть страницы. (Я не вижу это так часто, как я использую, хотя) "#" сам по себе, по умолчанию, переходит в начало страницы.

Ответ 3

Версия JavaScript:

myButton.onclick=function(e){
    e.preventDefault();
    // code
    return false;
}

версия jQuery:

$('.myButtonClass').click(function(e){
    e.preventDefault();
    // code
    return false;
});

Это хорошо работает!:)

Ответ 4

return false - это ответ, но я обычно делаю это вместо:

$('.closeLink').click( function(event) {
      event.preventDefault();
      ...do the close action...
});

Останавливает действие перед запуском вашего кода.

Ответ 5

Хотя это кажется очень популярным, href= '#' не является волшебным ключевым словом для JavaScript, это просто регулярная ссылка на пустой якорь и, как таковая, довольно бессмысленно. У вас в основном есть два варианта:

  • Внедрите альтернативу для пользовательских агентов, не знакомых с JavaScript, используйте параметр href, чтобы указать на него, и отмените ссылку на JavaScript. Например:.

    <a href="close.php" onclick="close(); return false">

  • Если альтернатива noscript недоступна или релевантна, вам вообще не нужна ссылка:

    <span onclick="close(); return false">Close</span>

Ответ 6

Один из доступных вам вариантов - не использовать href = "#", а вместо этого href = "javascript:;" это позволит вам запускать обработчик onclick, пока не прокручивается.

Пример

<a href="javascript:;" onclick="doSomething()">Do Something</a>

Ответ 7

Если ваш код передается eventObject, вы можете использовать preventDefault(); возврат false также помогает.

mylink.onclick = function(e){
 e.preventDefault();
 // stuff
 return false;
}

Ответ 8

Извините за поздний ответ, но никто не упомянул об этом. Просто сделайте <a>Do Stuff</a> без href и добавьте стиль cursor: pointer к элементу. Затем вы можете управлять любым событием click с jquery следующим образом

$(document).ready(function(){
  $("#Element").click(function(){
     alert("Hello");
    //Do Stuff
  })
});
#Element {
  cursor: pointer;
}
#Element:hover {
  color: #00f;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<a id="Element">Do Stuff</a>

Ответ 9

Используйте href = "JavaScript:Void(0);"

Ответ 10

Оберните оператор div вокруг ссылки, верните ссылку false, добавьте функциональность javascript в div на клик...

<div onClick="javascript:close();">
    <a href="#" onclick="javascript:return false;">Close</a>
</div>