#javascript #jquery
#javascript #jquery
Вопрос:
После нажатия на ссылку Click Me
страница прокручивается обратно наверх. Я этого не хочу. Как это можно исправить?
Пример: http://jsfiddle.net/Y6Y3Z/
Полоса прокрутки:
function myalert() {
var result = true;
//var hide = $('.alert').fadeOut(100);
//var css = $('#appriseOverlay').css('display','none');
var $alertDiv = $('<div class="alert">Are you sure you want to delete this item?<div class="clear"></div><button class="ok">no</button><button class="cancel">yes</button></div>');
var link = this;
$('body').append($alertDiv);
$('.ok').click(function () {
$('.alert').fadeOut(100);
$('#appriseOverlay').css('display', 'none');
callback(true, link);
});
$('.cancel').click(function () {
$('.alert').fadeOut(100);
$('#appriseOverlay').css('display', 'none');
callback(false, link);
});
$alertDiv.fadeIn(100);
$('#appriseOverlay').css('display', 'block');
return resu<
};
$('.click').click(myalert);
function callback(result, link) {
//
if(result){
}
}
Ответ №1:
Вам нужно только изменить «#» на «javascript: void (0)» в HTML-коде:
<a href="javascript:void(0)" class="click">Click Me</a>
Другое решение — добавить «/» после «#»:
<a href="#/" class="click">Click Me</a>
Комментарии:
1. Боже, я люблю тебя. Это / вещь ПОТРЯСАЮЩАЯ!. Я только что сказал 5 другим разработчикам и Жилберто, что теперь у вас есть 3 компании-разработчика, которые целуют ваши ноги прямо сейчас ^^
2. или вы можете просто удалить оттуда атрибут href. оба будут работать
3. Это самый простой способ сделать это. Спасибо.
4. 2021 и он отлично работает — href=»# /» — спасибо!
Ответ №2:
Причина, по которой он переходит в начало страницы, заключается в том, что ваш тег привязки имеет хэш-символ в качестве href. Синтаксис хэша позволяет ссылаться на именованный якорь в документе, при этом ссылка ведет вас к этому месту в документе. Действие по умолчанию для тега привязки, когда вы нажимаете на него, и href ссылается на именованную привязку, которая не существует, — это перейти к началу страницы. Чтобы предотвратить это, отмените действие по умолчанию, вернув false из обработчика или используя preventDefault
событие.
function myalert(e) {
e.preventDefault(); // <-- prevent the default action
...
return false; // <-- alternative way to prevent the default action.
};
Комментарии:
1. Не следует использовать, если вы не собираетесь останавливать события.
return false;
Вместо этого смотрите ответ @rodneyrehm.2. @Sparky672 — абсолютно правильно, но почти во всех случаях такого типа поведения, которые я наблюдал, предотвращение пузырьков событий также является правильным.
3. что это
e
здесь4.
e
являетсяevent
ли объект
Ответ №3:
просто предотвратите выполнение функции по умолчанию (переход к #marker): http://jsfiddle.net/Y6Y3Z/1 /