Когда я хочу предотвратить поведение по умолчанию для привязывающего тега, я использую
<a href="javascript:void(0);">link</a>
Какое наиболее эффективное решение?
Когда я хочу предотвратить поведение по умолчанию для привязывающего тега, я использую
<a href="javascript:void(0);">link</a>
Какое наиболее эффективное решение?
Пример изящно унизительного решения:
<a href="no-script.html" id="myLink">link</a>
<script>
document.getElementById("myLink").onclick = function() {
// do things, and then
return false;
};
</script>
Это хороший подход, если вы используете jquery, вы также можете сделать:
<a id="link" href="javascript:void(0)">link</a>
<script type="text/javascript">
$("#link").click(function(ev) {
ev.preventDefault();
});
</script>
preventDefault может быть полезен также для предотвращения отправки формы
У вас также может быть следующее:
<a href="#" onclick="return false;">link</a>
Если вы никогда не хотите, чтобы браузер следил за ссылкой в любом месте, я бы сказал, что у вас есть самое простое и безопасное решение.
Конечно, есть куча других решений, которые вы могли бы применить с javascript, но большинство других способов могут потерпеть неудачу, если
return false;
или preventDefault
, которая может быть в конце инструкции, не будет выполнена, и браузер будет следовать по ссылке, если только до #
.Здесь очень простой способ остановить это.
( function( $ ) {
$( 'a[href="#"]' ).click( function(e) {
e.preventDefault();
} );
} )( jQuery );
я все еще думаю, что использование javascript:void(0)
является своего рода лучшим способом обработки поведения тега привязки для некоторых из нас, кто использует angular, но если есть лучший способ решить проблему в angular, пожалуйста, я хотел бы выбрать ваш мозг по этому вопросу.
Я знаю это старая тема, но вот что я часто использую
<a href="javascript:void(0);">link</a>
<a href="javascript:;">link</a>