@skygliderus
Excel, HTML, CSS, JS, PHP, adaptive design

Почему переменная неопределена?

Народ, хелп плиз.
В продолжение предыдущего вопроса
Хочу чтобы состояние заливки фиксировалось для открытого вопроса и сбрасывалось при его закрытии. Для этого пишу функцию для определения аттрибута ссылки aria-expanded
function GetFaqAriaExpand() {
    var fa = $(this).prop('aria-expanded');
    return fa;
};

$('#faq-list a').on('mouseover click', function(e) {
    e.preventDefault;
    $(this).addClass('text-white');
    $(this).closest('.card-header').addClass('bg-dark');
});

$('#faq-list a').on('mouseout', function(e) {
    e.preventDefault;
    var fa = GetFaqAriaExpand();
    console.log ('fa: ' + fa)
    if (fa) {
        return;
    } else {
        $(this).removeClass('text-white');
        $(this).closest('.card-header').removeClass('bg-dark');
    }
});


А в консоли fa: undefined. День с утра не задался - туплю по страшному ))

Ссылка на код https://codepen.io/alexej-trikoz/pen/bJMoOY
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
1. Для получения значения атрибута вместо prop следует использовать attr.

2. Теряется контекст. Передавайте элемент как параметр:

function GetFaqAriaExpand(el) {
  var fa = $(el).attr('aria-expanded');
  ...


var fa = GetFaqAriaExpand(this);

Или устанавливайте контекст при вызове:

var fa = GetFaqAriaExpand.call(this);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы