Рейтинг:0

Как привязать событие JS к нескольким строкам представлений

флаг pl

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

Ниже приведен код для рендеринга поля и прикрепляемого js. Любая помощь приветствуется.

<?php

/**
 * @файл
 * Содержит \Drupal\msul_views_alert_management\Plugin\views\area\alertManagement.
 */

пространство имен Drupal\msul_views_alert_management\Plugin\views\field;

используйте Drupal\Core\Form\FormStateInterface;
используйте Drupal\views\Render\ViewsRenderPipelineMarkup;
используйте Drupal\views\ResultRow;
используйте Drupal\views\ViewExecutable;
используйте Drupal\views\Plugin\views\field\FieldPluginBase;

/**
 * Определяет плагин поля представлений.
 *
 * @ingroup views_field_handlers
 *
 * @ViewsField("управлениеполевымипредупреждениями")
 */
класс alertFieldManagement расширяет FieldPluginBase {

  /**
   * {@inheritdoc}
   */
  публичная функция рендеринга (ResultRow $values) {
    $выход = массив();
    $uuid=((массив)($values->_entity))[chr(0).'*'.chr(0).'values']['uuid']['x-default'];
    $body=((массив)($values->_entity))[chr(0).'*'.chr(0).'values']['body']['x-default'];
    if(!isset($_COOKIE['EUA-'.$uuid]) || $_COOKIE['EUA-'.$uuid]!="Скрытый"){
      $ вывод = [
        'пользовательское оповещение' => [
          '#type' => 'контейнер',
          '#атрибуты' => [
            'класс' => ['предупреждение пользователя'],
          ],
          'userAlertClose' => [
            '#type' => 'контейнер',
            '#атрибуты' => [
              'uuid' => $uuid,
              'class' => ['user-alert-close-button'],
            ],
            'tempButton' => ['#разметка' => 'X'],
          ],
          'текст предупреждения' => [
            '#markup' => check_markup($body[0]['value'],$body[0]['format']),
          ],
        ],
        '# прикрепленный' => [
          'библиотека' => ['msul_views_alert_management/alert_field_management-js'],
          'drupalSettings' => [
            'msul_views_alert_management' => [
              'uuid' => $uuid,
            ],
          ],
        ],
      ];
    }
    вернуть $ вывод;
  }

//... здесь другой код...

}
( функция ($, Drupal, drupalSettings){
      uuid = drupalSettings.msul_views_alert_management.uuid;

      в то время как ($('[uuid="'+uuid+'"]').длина > 1){
        $('[uuid="'+uuid+'"]').last().closest(".views-row").remove();
      }

      $('[uuid="'+uuid+'"]').on('щелчок',
        функция () {
          $(this).closest(".views-row").remove();
          document.cookie = "EUA-"+uuid+"=Скрытый;путь=/;";
        }
      );
})(jQuery, Drupal, настройки drupal)
флаг pl
Я оставлю этот вопрос, так как мне все еще любопытен ответ, но я решил пойти другим путем, чтобы решить проблему, и прикрепил js ко всему представлению (с логикой добавления обработчика кликов в каждое поле) вместо присоединения его в отдельные поля.

Ответить или комментировать

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