Я пытаюсь написать небольшой скрипт фильтра для 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: Были допущены ошибки!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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