preventDefault по-прежнему прокручивается в начало страницы

StackOverflow https://stackoverflow.com//questions/10688712

  •  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?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top