Nano Hash - криптовалюты, майнинг, программирование

Несколько всплывающих окон начальной загрузки на странице, но только первое нажатие работает по желанию

У меня есть несколько всплывающих окон, которые размещены в разных ячейках таблицы данных jquery.

//popover needs to be triggered onclick on this i element
<i tabIndex ="0" class="fa fa-info-circle popoverIcon" aria-hidden="true" data-placement="bottom" data-toggle="popover" ></i>
//this is hidden by css
<div class="popover-content hidden"><div>Popover text</div></div>

Инициализация всплывающего окна:

$('#MyDataTable').on('mouseenter', '.popoverIcon', function (event) {
  $(this).popover({
    html: true,
    content: function () {
            return $(this).next().html();
        },
    title: "Comment",
    trigger: "manual"
    });
});

Я хочу, чтобы всплывающее окно имело все функции trigger: "click", но его можно было закрыть, щелкнув СНАРУЖИ области элемента всплывающего окна (область всплывающего окна = само окно всплывающего окна или упомянутый элемент i). Я применил решение, которое нашел здесь Как закрыть всплывающее окно Twitter Bootstrap, щелкнув снаружи?

Похоже на то. Функция SHOW popover:

$('#MyDataTable').on('click', '.popoverIcon', function (event) {
    //if popover closed - open it
    if (!popoverOpen) {
        $(this).popover('toggle');
        popoverOpen = true;
    }
});

Функция для СКРЫТИЯ всплывающего окна:

 $(document).on('click', function (e) {
  if (popoverOpen && !mouseOnPopoverArea) {
        $('[data-toggle="popover"]').each(function () {
            if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
                $(this).popover('hide');
            }
        });
        popoverOpen = false;
    }
});

Странно то, что он работает отлично, но ТОЛЬКО с самого первого поповера, который я открываю. Когда я пытаюсь открыть вторую, третью, четвертую (...), ничего не происходит. Когда я возвращаюсь к первому, который я щелкнул, он снова работает. В чем может быть дело?


Ответы:


1
$('#MyDataTable').on('click', '.popoverIcon', function (event) {
    //if popover closed - open it
    if (!popoverOpen) {
        $(this).popover('toggle');
        popoverOpen = true;
    }
});

в этом вы вызываете событие клика только для одного идентификатора, поэтому попробуйте назначить разные идентификаторы и события щелчка на них соответственно

10.01.2018
  • Это не идентификатор, это класс. Все иконки понимают. Элементы значка динамически генерируются в файле .ashx вместе со всей таблицей данных и ее данными. По этой причине я не могу вручную назначить идентификатор каждому отдельному значку. 10.01.2018
  • чем если класс уникален, т.е. не нацелен ни на что другое, кроме всплывающего окна, чем использовать его вместо идентификатора 10.01.2018
  • У меня такие же симптомы - только первый работает отлично. Я думал, что могу просто динамически подключить все. Приходилось писать события on.click() для каждого идентификатора и включать и выключать их. 09.09.2019

  • 2

    Попробуйте получить доступ к всплывающему элементу, сначала нацелившись на его родительский элемент, используя parent() через $this, а затем найдя в нем элемент всплывающего окна, используя find()

    10.01.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..