Я использую html5-атрибут «data» для элемента и хочу присвоить значение атрибута переменной, только если она существует и если она не пуста:
var xxx = $(this).data('what') ? $(this).data('what') : 'default_value';
но это не работает. Я всегда получаю значение по умолчанию ...
Использование короткого замыкания проще и эффективнее:
var xxx = $(this).data('what') || 'default_value';
Но ваш код должен был сработать в любом случае, предполагая, что данные существуют (как заметил комментатор).
Похоже, $ (это) не то, что вы ожидаете. Помимо этого, заявление выглядит хорошо. Демо
Согласно документации: .data ()
Метод .data () позволяет нам прикреплять данные любого типа для элементов DOM в путь, который безопасен от кругового ссылки и, следовательно, из памяти Утечки.
.attr ()
Метод .attr () получает атрибут значение только для первого элемента в соответствующий набор.
Итак, вы хотите использовать метод .attr () , например:
var xxx = $(this).attr('data-what') || 'default_value';