Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.05.2023, 19:41
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

Как убрать scroll по якорю, используя метод offset ?
Здравствуйте.

Я использую скрипт, с якорным свойством, который позволяет использовать несколько тел bootstrap вкладок вместо одной, на одной кнопке.

И столкнулся с проблемой.
Как убрать возвращение на предыдущее место, при нажатии на якорную ссылку?

Нужно чтобы при нажатии на якорную ссылку изменялось отображение bootstrap тел, но при этом текущая позиция оставалась неизменной (где нажал там и остался!).

Я так понимаю тут надо поиграть с методом offset. Но не уверен

Текущий скрипт:
// передаём тело табов через свойство data-bs-toggle
$('#mainservice a[data-bs-toggle="tab"]').on('show.bs.tab', function(e) {
    let target = $(e.target).data('bs-target')
    $(target)
    .addClass('active show')
    .siblings('.tab-pane.active')
    .removeClass('active show');
    // return false; - не подходит! так как позиция остаётся, но соседние функции перестают корректно работать
    // e.preventDefault(); - не подходит! так как позиция остаётся, но соседние функции перестают корректно работать
});

Последний раз редактировалось WebMachine, 31.05.2023 в 19:44.
Ответить с цитированием
  #2 (permalink)  
Старый 31.05.2023, 20:36
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Сообщение от WebMachine
Как убрать возвращение на предыдущее место, при нажатии на якорную ссылку?
Надо, что бы при клике на ссылку не было перехода. Т.е. обрабатывать клик самому. В нем
ev.preventDefault()
и скроллинг к нужному месту.
Или не скроллинг, а показ нужной части страницы.
Ответить с цитированием
  #3 (permalink)  
Старый 31.05.2023, 21:11
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

Сообщение от voraa Посмотреть сообщение
Надо, что бы при клике на ссылку не было перехода. Т.е. обрабатывать клик самому. В нем
ev.preventDefault()
и скроллинг к нужному месту.
Или не скроллинг, а показ нужной части страницы.
да. но как?

повторюсь, если использовать e.preventDefault(); то позиция остаётся, но соседние функции перестают корректно работать.

Надо запретить не все возможности якоря а только изменение позиции.

В моём представлении данная картина основана на методах: offset или scroll-behavior

Но как составить такое решение ума не приложу

Последний раз редактировалось WebMachine, 31.05.2023 в 21:53.
Ответить с цитированием
  #4 (permalink)  
Старый 31.05.2023, 22:19
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Сообщение от WebMachine
повторюсь, если использовать e.preventDefault(); то позиция остаётся, но соседние функции перестают корректно работать.
Ничего не могу посоветовать не видя эти "соседние" функции
Сообщение от WebMachine
Надо запретить не все возможности якоря а только изменение позиции.
Якорь - это ссылка. При клике по ней выполняются действие по умолчанию - переход к якорю (по новому url с этим якорем) и запоминание в истории. Это можно отменить только с помощью preventDefault()
Подумайте, может вместо ссылки с якорем стоит использовать кнопку.
Ведь по семантике ссылка - что бы куда то перейти, кнопка - что бы что то сделать (показать другую вкладку)

Последний раз редактировалось voraa, 31.05.2023 в 22:48.
Ответить с цитированием
  #5 (permalink)  
Старый 31.05.2023, 22:53
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141



Удалось решить задачу, с помощью history.pushState. Он также задаёт и сохраняет ссылку но без подкидывания

Последний раз редактировалось WebMachine, 18.06.2023 в 13:52.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как используя объект Audio узнать.. Greatest_Duke Общие вопросы Javascript 1 06.03.2017 19:42
КАК УБРАТЬ ВЕРТИКАЛЬНОЮ ПРОКРУТКУ? dezytube Элементы интерфейса 1 04.09.2016 07:06
Как убрать # (хэш/решетку) в URL при прокрутке к якорю vladislav_zp Элементы интерфейса 3 03.08.2016 09:58
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как убрать выделение в Опере у div, получившего фокус ? spa_2002 Opera, Safari и др. 5 03.09.2009 10:42