Отключить прокрутку только к элементу href onclick - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть некоторые элементы на странице с пользовательским интерфейсом аккордеона / табуляции, и когда пользователь щелкает один из них, он открывается, а также прокручивает его в верхней части страницы из-за привязки в href,Я хочу остановить это прыгательное поведение только . Это пример такого элемента;

<a class="data switch" tabindex="-1" data-toggle="trigger" href="#description" id="tab-label-description-title">
More info
</a>

Поскольку этот элемент связан со всеми видами вещей, связанных с CMS и UIX, я не могу изменить значение href, как предлагает большинство ответов на подобные вопросы.

Итак, я попробовал с JavaScript / jQuery что-то вроде этого;

$('.data.switch').on('click', function(e) {
    e.stopPropagation();
});

Это останавливает переход к элементу, но также останавливает все остальное, делая элемент вообще не функционирующим. Итак, мой вопрос:Есть ли какой-то вариант действия stopPropagation, который запрещает переход только к элементу привязки?

edit Я думаю здесь вслух;как stopPropagation или preventDefault останавливает все всплывающие действия, разве нет способа указать только прокрутку? Или, возможно, это обходной путь, при котором при нажатии он читает текущую позицию прокрутки и заставляет оставаться в этой позиции (хотя это выглядит очень хакерски) ..?

1 Ответ

0 голосов
/ 05 ноября 2019

Вы можете достичь своего результата, выполнив следующие действия

В вас HTML добавьте код id тег, такой как

<a class="data switch" id="dataSwitch" tabindex="-1" data-toggle="trigger" href="#description" id="tab-label-description-title">
    More info
</a>

и в вашем jquery использовать функцию готовности документа

$(document).ready(function () {
    $('#dataSwitch').on('click', function (e) {
        e.stopPropagation();
    });
});
...