Переопределение псевдо стилей в jQuery - PullRequest
1 голос
/ 17 августа 2010

Как я могу переписать CSS ниже с помощью jQuery?

(анимация не запускается, и это просто мгновенный переключатель.)

menu span ul {display: none;}
menu span:hover ul {display: block;}

$('#menu span').mouseenter(function(){
    $('#menu span ul').slideDown('fast');
}).mouseleave(function(){
    $('#menu span ul').slideUp('fast');
});

Ответы [ 2 ]

1 голос
/ 17 августа 2010

Одна из хитростей для постепенной деградации заключается в том, что не нужно переопределять стили, например:

<noscript>
  <style type="text/css">#menu span:hover ul {display: block;}</style>
</noscript>

Из них иметь одинаковую связанную таблицу стилей со всеми этими стилями для не-JS-пользователей.


Или, сделайте это через класс, который вы применяете к #menu, который вы можете удалить, чтобы правила больше не соответствовали, например:

#menu span ul {display: none;}
#menu.noJS span:hover ul {display: block;}

И в вашем сценарии простоудалите этот класс:

$("#menu").removeClass("noJS");

В качестве примечания вы можете уменьшить свой код, используя .hover() и .slideToggle() следующим образом:

$('#menu span').hover(function(){
  $(this).find('ul').slideToggle('fast');
});
0 голосов
/ 17 августа 2010

Вы не видите анимацию, потому что ваш CSS переопределяет ее.

Удалить

menu span:hover ul {display: block;}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...