jquery применяет прозрачность, только если элемент не является определенным классом - PullRequest
0 голосов
/ 29 декабря 2011

Я пытаюсь создать несколько графических объектов, инициализировать их с непрозрачностью 0,5, а при наведении или нажатии на них непрозрачность изменяется на 1. (Это часть элемента выбора статьи на странице - вроде вкладки, но невкладки) Я могу сделать наведение над битом, но добавление кода для обработки нажатой части - это то, что я думаю, что перегружено событием наведения, когда мышь отходит от элемента.Если я добавлю класс к элементу, на который нажали, чтобы сказать «выбранный», есть ли способ применить элемент наведения, только если не класс = «выбранный».

Вот мой лоскутный код!

$(document).ready(function() {

        $('.pic').stop().animate({ opacity: 0.5 }, 250);

        $('.pic').each(function() {
            $(this).hover(function() {
                $(this).stop().animate({ opacity: 1.0 }, 250);
            },
           function() {
               $(this).stop().animate({ opacity: 0.5 }, 250);
           });

           $(this).click(function() {
               alert('Clicked');
               $('.pic').stop().animate({ opacity: 0.5 }, 250);
               $(this).stop().animate({ opacity: 1.0 }, 250);
           });

        });
    });

Есть ли лучший (более чистый) способ сделать это?

Я попробовал CSS и использовал Jquery, чтобы изменить класс css, но не смог заставить его работать, поэтому вернемся к этому.

Спасибо

1 Ответ

1 голос
/ 29 декабря 2011

Проверьте, имеет ли рассматриваемый элемент hasClass () , и сделайте что-нибудь, если этого не произойдет ...

Пример:

if(!$(this).hasClass('selected')){  
  // do stuff
}
...