Переключатель JQuery не работает при изменении, когда я пытаюсь установить css - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть кнопка, которая работает только один раз. Это часть скрипта:

$('#toggle').change(function(){

    var mode= $(this).prop('unchecked');

    if(mode = true) {

      $('.container').css('display','block'); 
      $('.container').hide().delay(500).fadeIn(1000); 
      $('#map').css('filter','grayscale(100%)');

    } else {

      $('.container').css('display','none'); 
      $('.container').delay(500).fadeOut(1000); 
      $('#map').css('filter','grayscale(0%)');

    }

});

Первая часть условия If выполняется, а не Else. Я не понимаю почему. Некоторая помощь?

Ответы [ 2 ]

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

В вашем коде есть две ошибки. 1) Нет такого свойства как: unchecked, вы должны использовать: selected свойство 2) Вы написали if (mode = true), а не if (mode == true), поэтому вы не проверяли равенство, вы присваиваете новое значение

Правильный код:

$('#toggle').change(function(){

var mode= $(this).prop('checked');
console.log(mode);

if(mode == true) {

  $('.container').css('display','block'); 
  $('.container').hide().delay(500).fadeIn(1000); 
  $('#map').css('filter','grayscale(100%)');

} else {

  $('.container').css('display','none'); 
  $('.container').delay(500).fadeOut(1000); 
  $('#map').css('filter','grayscale(0%)');

}

});
0 голосов
/ 26 апреля 2020

Пара вопросов здесь. @ AidOnline01 упомянул первые два.

  1. Свойство unchecked не существует, вместо него используйте checked.
  2. if (mode = true) оператор присваивает mode значение вместо оценки равенство. Используйте if (mode == true)
  3. Функция затухания не ожидает завершения анимации перед назначением. Используйте обратный вызов для вызова $('.container').css('display','none');

Я сделал JSFiddle для демонстрации: https://jsfiddle.net/g3y27o5L/4/

...