preventDefault по-прежнему прокручивается в начало страницы
-
12-12-2019 - |
Вопрос
У меня есть следующий код, который должен останавливать все происходящее при нажатии на ссылку, за исключением срабатывания и оповещения.Назначение ссылки отменено, но при нажатии на ссылку вы переходите к началу страницы.Как я могу остановить такое поведение?Спасибо
$('a#target').click(function(event){
event.preventDefault();
alert('End of demo');
});
ОБНОВИТЬ мою ссылку, которая выглядит следующим образом:
<a href="#">Submit</a>
Решение
Нет, preventDefault не должен ничего останавливать, он должен делать именно то, что он говорит - предотвращать действие по умолчанию.т. е.Если вы нажмете на ссылку с href, это предотвратит действие браузера по умолчанию, которое заключается в переходе по этой ссылке.
Если вы хотите остановить все другие события, подключенные к этой ссылке, вы должны вернуть false в конце обработчика событий И убедиться, что этот обработчик событий выполняется раньше любых других.
Обновить:
Спасибо, что разместили ссылку и значение href.Я готов поспорить, что происходит то, что JavaScript обнаруживает ошибку еще до того, как обработчик кликов может быть запущен.Как правильно указано в первом комментарии к этому ответу - preventDefault также должен препятствовать переходу ссылки на якоря внутри страницы.Если это не так, то это, вероятно, связано с ошибкой JavaScript в другом месте страницы.
Учитывая все это, вы уверены, что разместили правильный HTML-код?
$('a#target').click(...
Прикрепил обработчик кликов к ссылке, которая выглядит следующим образом:
<a href="#" id="target">Submit</a>
И последняя мысль - если к элементу привязки привязаны только действия, связанные с ним через JavaScript, то зачем вообще указывать атрибут option href?