Я искал этот вопрос и пришел к выводу, что
$("a").click(function(e){
e.preventDefault();
var link = $(this).attr("href");
setTimeout(function() {
alert(link);
window.location.href = link;
}, 1000);
});
Однако должно работать так, как мне нравится, когда я использую его, вместо этого он перейдет в то место, где установлена ссылка.
Если я могу спросить, зачем вам это нужно? Поскольку он нарушает стандартные функции, предлагаемые браузером, такие как открытие ссылки в новой вкладке, нажав Ctrl + Mouse 1.
alert (), вероятно, возится с вами. К тому времени, как вы закроете alert (), 1 секунда уже пройдет, и вы будете перенаправлены. Удалите alert () и / или увеличьте время ожидания, и вы, вероятно, увидите, что код работает должным образом. Я не вижу ничего явно неправильного в коде, по крайней мере, на первый взгляд. Но не видя разметки, это трудно увидеть. Ваш код отлично работает здесь: jsfiddle.net/5ea9pr18
@HaukurHaf, насколько мне известно, alert() является синхронным и блокирует выполнение всего кода в этот момент, пока не будет отклонен.
Да, я думаю, вы правы в том, что предупреждение является синхронным.
"когда я использую его, вместо этого он перейдет в то место, на которое установлена ссылка" - значит до показывает алерт? Или как только вы закроете оповещение? Отображается ли предупреждение через 1 секунду? Измените свой alert на console.info, а затем просто посмотрите консоль браузера (с сохранением входа в систему) - если вы видите журнал, значит, он работает нормально.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваш код действительно в порядке. Тем не менее, вы можете рассмотреть возможность достижения этой цели другим способом, поскольку вы нарушите стандартную функциональность события a.
$(document).on('click', 'a', function(e){
e.preventDefault();
var link = $(this).attr("href");
setTimeout(function() {
alert(link);
window.location.href = link;
}, 1000);
});<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href = "https://www.google.com">Click me</a>Пожалуйста, добавьте комментарий о том, какой «другой способ» вы использовали и как он решает проблему для OP / проблему «нарушения функциональности по умолчанию для события a).
Попробуй это:
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>Dev</title>
<script src = "https://code.jquery.com/jquery-3.3.1.min.js" integrity = "sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8 = " crossorigin = "anonymous"></script>
</head>
<body>
<a href = "https://localhost/sip-js"> test </a>
</body>
<script>
$("a").click(function(e){
var link = $(this).attr("href");
setTimeout(function() {
alert(link);
window.location.href = link;
}, 5000);
e.preventDefault();
});
</script>
</html>
Ссылка есть при регистрации мероприятия?