Как проверить parentNode classList в операторе if else в javascript - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть функция, которая вызывается всякий раз, когда отмечается флажок из определенной группы. Я пытаюсь добавить класс в родительскую оболочку ввода, когда флажок установлен, а затем удалить класс, когда он не установлен. Моя проблема в том, что я не могу заставить родителей и узел совместной работы работать вместе.

например. Этот код работает:

$(this.parentNode).css( "border", "3px solid red" );

Но этот код возвращает неопределенную ошибку

alert($(this.parentNode).classList

Для контекста, вот что я в конечном итоге пытаюсь получить:

    if ($(this.parentNode.parentNode).find('.form-type-checkbox').classList.contains("chkbox-checked")) {
      $(this.parentNode.parentNode).find('.form-type-checkbox').removeClass("chkbox-checked");
    } else {
      $(this.parentNode).addClass("chkbox-checked");
    }

Ответы [ 3 ]

1 голос
/ 09 апреля 2020

Не используйте вслепую jQuery для всего. this.parentNode.classList будет определено, поскольку оно не заключено в jQuery, поскольку classList не существует в jQuery.

1 голос
/ 09 апреля 2020

Я думаю, что самое простое решение может быть таким, как если бы вы использовали toogleClass () из jQuery. Пожалуйста, ознакомьтесь со следующим кодом.

$("#id_of_radioButton").click(function(){
  $("#id_of_parentNode").toggleClass("classname");
});
1 голос
/ 09 апреля 2020

$(this.parentNode) - это объект jQuery, так как classList является чистым свойством JS, это не будет работать на jQuery ссылочном объекте.

Попробуйте использовать jQuery 's .attr():

$(this.parentNode).attr('class');
...