Jquery toggle: нажатие на ссылку переходит к началу страницы
Я создал jquery toggle, но когда я нажимаю ссылку, чтобы открыть div, он переместится в начало страницы. как я могу это исправить?
Я знаю, что я мог бы заменить ссылку на что-то еще, но мне нужно дать понять пользователям, что это ссылка, и что они могут нажать на нее.
Ответы
Ответ 1
Добавьте return false;
в конец кода, который запускается при нажатии ссылки.
$('a.myLink').toggle(function() {
// run my code
return false;
});
В качестве альтернативы вы можете захватить объект event
и вызвать .preventDefault()
.
$('a.myLink').toggle(function(event) {
event.preventDefault();
// run my code
});
Оба этих метода отключают поведение ссылки по умолчанию.
Первый из них также предотвратит пузырьковое событие, поэтому используйте его, только если вам не нужно использовать пузырьки событий.
Ответ 2
Это потому, что есть действие по умолчанию, связанное с элементами, такими как ссылки, флажки, переключатели и т.д. Вы можете отменить его так:
$('a.mylink').click(function(ev) { // Pass in the event object to your function
// do stuff
ev.preventDefault();
return false;
});
Дополнительная информация здесь: http://api.jquery.com/event.preventDefault/
В редком случае присоединения обработчика события к дочернему элементу ссылки вы также захотите использовать event.stopPropagation()
, чтобы остановить событие, пузырящее DOM.