Задать вопрос
@boga-net

Как получить атрибут data с методом hasClass()?

Всем привет.
Пытаюсь вытащить атрибут у активного слайда в slick.js, которому добавляется класс slick-active.
Использую метод hasClass(), чтобы достать атрибут активного слайда
На простом, отвлечённом примере тоже не получается

<div id="example">
  <div class="slide active" data-exam="666"></div>
</div>


Так работает :

var $example = $('#example').children().data('exam');
console.log($example);


-----------

Вот так выдаёт ошибку, что это не функция

var $example = $('#example').children().hasClass('active').data('exam');
// Или так
// var $example = $('#example').find('slide').hasClass('active').data('exam'); 
console.log($example);


Методы hasClass(), как и is(), как я понял, возвращают булево значение. Каким образом можно реализовать данную проверку без функций и if else ? Может есть какая-то альтернатива ?
Спасибо.
  • Вопрос задан
  • 81 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
dimovich85
@dimovich85 Куратор тега JavaScript
https://u-academy.net/
Вам нужен вот этот метод: http://jquery.page2page.ru/index.php5/Фильтрация_в...
Он не делает нового поиска, а берет массив уже имеющихся объектов DOM, скорее объектов jq, и перебирает по заданным параметрам, возвращает массив только тех элементов, которые прошли проверку фильтра.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lidacriss
@lidacriss
wtf
А что именно вам нужно?

$('#example').children().hasClass('active') в принципе будет равнозначно такому:
$('#example active')
только в ответ получим не "булев" тип, а список элементов с классом 'active'
поэтому можно сделать чтото типа такого
let $example = $('#example active').data('exam')
но в таком случае мы получим значение атрибута data-exam первого элемента

если нужны data-exam всех найденных элементов, то
let $example = $('#example active').map(function(){return $(this).data('exam');}).get()

получим массив значений
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы