Условный оператор jQuery $ .data () - PullRequest
4 голосов
/ 28 апреля 2011

Я использую html5-атрибут «data» для элемента и хочу присвоить значение атрибута переменной, только если она существует и если она не пуста:

var xxx = $(this).data('what') ? $(this).data('what') : 'default_value';

но это не работает. Я всегда получаю значение по умолчанию ...

Ответы [ 3 ]

5 голосов
/ 28 апреля 2011

Использование короткого замыкания проще и эффективнее:

var xxx = $(this).data('what') || 'default_value';

Но ваш код должен был сработать в любом случае, предполагая, что данные существуют (как заметил комментатор).

3 голосов
/ 28 апреля 2011

Похоже, $ (это) не то, что вы ожидаете. Помимо этого, заявление выглядит хорошо. Демо

2 голосов
/ 28 апреля 2011

Согласно документации:

.data ()

Метод .data () позволяет нам прикреплять данные любого типа для элементов DOM в путь, который безопасен от кругового ссылки и, следовательно, из памяти Утечки.

.attr ()

Метод .attr () получает атрибут значение только для первого элемента в соответствующий набор.

Итак, вы хотите использовать метод .attr () , например:

var xxx = $(this).attr('data-what') || 'default_value';
...