Предотвращение прокрутки вверх при нажатии на хеш-ссылку с помощью плагина Jquery scrollTo

#javascript #html #hash #scroll #position

#javascript #HTML #хэш #прокрутка #позиция

Вопрос:

Это сводит меня с ума! У меня есть страница содержимого в середине, которая будет прокручиваться в отличие от слайд-шоу, каждый значок представляет новый раздел содержимого, который будет обновляться в пространстве просмотра.

Моя проблема заключается в том, что каждый раз, когда нажимается на хеш-ссылку, содержимое обновляется, но я попадаю в начало страницы, где содержимое теперь не отображается.

Я попробовал то, что, как я предполагал, поможет:

 return false
preventDefault
Dummy hashes ( #_XYZ)
#null
onClick="return false"
href="javascript;void(0);"
  

Ничего не помогло. Я предполагаю, что мне нужно захватить и установить положение страницы, но, будучи новичком в JS, я не уверен, как правильно его применять.

Вот часть кода, который я использую:

 $('#case1Step1').click(function(e)
{
      e.preventDefault();
    $('#webMain').fadeOut('normal',function(e)
    {
        $('#step1Case1').fadeIn();
    });     
    _gaq.push(['_trackEvent', 'WebThumbs', 'big']);
    return false;
}
);
  

Опять же, этот ответ работает, но я смотрю позицию страницы и оказываюсь в верхней части страницы.

Комментарии:

1. Вызов e.preventDefault() должен препятствовать переходу браузера к хэш-ссылке. Появляется ли хэш-ссылка в адресной строке после нажатия на ссылку?

2. Нет, он не отображается в адресной строке, поэтому он работает так, как должен в этом поместье, но браузер по-прежнему реагирует на него и прокручивается в начало страницы.

3. Вы можете попробовать вызвать его в начале обработчика кликов или закомментировать весь остальной код в обработчике кликов, за исключением вызова e.preventDefault() .

4. Просто ошибка вставки — я отредактировал код в сообщении, чтобы он точно соответствовал тому, что я использую. Хэш НЕ отображается в URL, но позиция прокрутки все равно возвращается наверх. казалось бы, это e.preventDefault(); наверняка удаляет хэш, но не предотвращает ответ браузера.

5. Вы всегда можете заменить свой хэш нулевым протоколом JavaScript: href=»javascript://»