Доступ к глобальным атрибутам data-* в javascript

Я пытаюсь написать небольшой скрипт фильтра для ajax-таблицы и пытаюсь открыть оверлей, когда кто-то нажимает на элемент:

<div class = "at-filter" data-filter-val = "{some_value}" data-filter-type = "{some_type}">
...
</div>

Как получить доступ к типу и значению фильтра данных через javascript/jquery? В гугле вообще ничего не нашел. Что-то вроде этого я ищу:

this.table.find( '.at-filter' ).each(
    function(index, element) {
        var type=$(element).data-filter-type();
        var val=$(element).data-filter-val();
        self.data.filter[type] = {};
        $(element).bind('click', {self:self, val:val, type:type}, type.openContextMenu);
    }
)

edit: Были допущены ошибки!

@StefanR - это хороший способ сделать это с DOM (что, очевидно, работает). У меня удивительно много проблем с поиском хорошо с использованием API jQuery. Я могу найти много где attr и/или data используются, но фокус другой. Очень удивительно.

T.J. Crowder 15.03.2019 11:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
701
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы используете attr:

var type = $(element).attr("data-filter-type");

Вы также можете использовать data:

var type = $(element).data("filter-type"); // Read the note below, though

... но это не обязательно или не совсем уместно, если все, что вы хотите сделать, это получить доступ к значениям этих атрибутов. Вопреки распространенному мнению, data — это нет аксессор для data-* атрибутов. (Это и больше, и меньше, чем это.)

Ответ принят как подходящий

Чтобы получить значение атрибута, используйте jquery attr() или обычный JavaScript getAttribute.

Но

To retrieve and change DOM properties such as the checked, selected, or disabled state of form elements, use the .prop() method.

Или

В простом JavaScript setAttribute

console.info($('.me').attr('data-attribute'));
console.info($('.me').attr('data-second-attr'));

$('.me').each(function() {
  console.info(this.getAttribute('data-attribute'));
  console.info(this.getAttribute('data-second-attr'));
  this.setAttribute('data-second-attr', 'foo-bar');
  console.info('after change', this.getAttribute('data-second-attr'));
})

$('.me').prop('data-attribute', 'baz')
console.info('after change', $('.me').prop('data-attribute'));
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "me" data-attribute = "foo" data-second-attr = "bar">yo</div>

Другие вопросы по теме