Целевые параметры c кнопки - Jquery - PullRequest
0 голосов
/ 24 апреля 2020

Я использую этот код для назначения определенных c кнопок на странице

jQuery('button').on('click', function() {
  const num = this.dataset.xToggleable.match(/\d+$/);
  if (num) {
    jQuery('div[id^=privsec]').hide();
    jQuery(`div#privsec-${num}`).show();
  }
});

Кнопки имеют следующую разметку:

<button class="x-active" role="tab" aria-selected="true" aria-controls="panel-6" data-x-toggle="tab" data-x-toggleable="tab-item-6" data-x-toggle-group="tab-group-e572-5"></button>

Однако я получаю эту ошибку, когда нажимая на другие кнопки, для которых не установлены свойства aria.

Uncaught TypeError: Cannot read property 'match' of undefined
    at HTMLButtonElement.<anonymous> ((index):1508)
    at HTMLButtonElement.dispatch (jquery.js?ver=1.12.4-wp:3)
    at HTMLButtonElement.r.handle

Как я могу изменить свой код, чтобы избежать этого?

Ошибка появляется при нажатии этой кнопки во всплывающем окне на странице:

<button type="button" class="pum-close popmake-close" aria-label="Close">×</button>

1 Ответ

2 голосов
/ 24 апреля 2020

Ваша логика c требует, чтобы на кнопке был атрибут data-x-toggleable. Если есть кнопки, у которых нет этого атрибута, нет смысла добавлять к ним ваш обработчик событий. Вы можете выбрать только те элементы, которые имеют этот атрибут, используя селектор атрибута, например:

jQuery('button[data-x-toggleable]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...