Я создал галерею черно-белых изображений (используя свойство CSS filter: grayscale()).

Если пользователь нажимает на одно из изображений, мне бы хотелось, чтобы оно отображало свои настоящие цвета.

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

Пожалуйста помоги.

$('document').ready(() => {
   $('img').click(() => {
     if ($('img').is("#1")) {
      $('#1').css("filter", "none");
     } else if ($('img').is("#2")) {
       $('#2').css("filter", "none");
     }
etc.
1
SashaB 22 Фев 2021 в 00:55

1 ответ

Лучший ответ

Похоже, вам просто нужно использовать полный function и использовать вместо него this:

$('document').ready(() => {
   $('img').click(function() {
    $(this).css('filter', 'none');
  });
});

Если у вас есть изображения, которые вы не хотите, чтобы этот слушатель активировал, дайте все изображения, которые вы делаете , чтобы активировать слушатель в классе, например galleryImg, а затем выполните

$('.galleryImg')

Вместо того

$('img')
0
CertainPerformance 21 Фев 2021 в 21:56