Запретить прокрутку страницы после щелчка?

#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 /