Href= "#" Не прокручивать
Я новичок в JS - так просто интересно, знаете ли вы, как решить эту проблему.
Ток, который у меня есть в моем коде
<a href='#' class="closeLink">close</a>
Запуск некоторых JS для закрытия окна. Проблема заключается в том, что когда пользователь нажимает на ссылку - href= "#" переводит пользователя в начало страницы, когда это происходит.
Как решить это, чтобы он этого не делал? то есть я не могу использовать someting как onclick = "return false", как я полагаю, это остановит работу JS?
Спасибо
Ответы
Ответ 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>