2013-05-21 2 views
3

На веб-сайте, на котором я работаю, есть меню навигации (неупорядоченный список в формате CSS) с подменю для некоторых категорий (неупорядоченные списки детей).Отмена поведения наведения CSS с помощью jQuery

Это правило CSS скрывает подменю неупорядоченный список:

.main-navigation ul ul { 
    display:none; 
} 

И это правило CSS делает подменю неупорядоченный список появляется, когда посетитель наводит курсор на ссылку верхнем меню уровня:

.main-navigation ul li:hover > ul {; 
    display:block; 
} 

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

Теперь я заправляю это меню навигации с помощью jQuery, и самое первое, что мне нужно сделать, это отключить поведение при наведении, продиктованное CSS. По какой-то причине мне нелегко это делать, и я могу воспользоваться некоторой помощью. Вот что я пробовал:

jQuery(document).ready(function($) { 
    $('.main-navigation ul li:hover > ul').css('display', 'none'); 

}); 

Не повезло, CSS по-прежнему управляет поведением и подменю появляется при наведении курсора мыши, как будто нет JQuery присутствует. Это значит, что я делаю это неправильно.

Буду признателен, если кто-нибудь объяснит мне, как это должно быть сделано!

ответ

3

Попробуйте это:

DEMO

jQuery(document).ready(function($) { 
    $('.main-navigation ul li').on('mouseover',function(){ 
     $('.main-navigation ul li:hover > ul').css('display', 'none'); 
    }); 
}); 
+0

Perfect, @roasted! Работал как шарм. Спасибо! –

+0

'+ 1' Nice trick;) –

+0

Все отлично об этом фрагменте, @roasted, за одним исключением. Сценарий не учитывает, что происходит, если пользователь отводит указатель мыши от ссылки. Не могли бы вы помочь немного дальше, пожалуйста? Я был бы очень благодарен! –

3

Лучшее, что вы можете сделать, это удалить класс main-navigation от родителя. В противном случае вы не сможете манипулировать стилями псевдо классов из JavaScript.

+0

Вы имеете в виду, что-то вроде этого, @techfoobar: $ ('главной навигации ул. ') RemoveClass (' главный-навигации.');. - я прав? –

+0

удалить класс, вы потеряете все приложенные правила стиля CSS, даже некоторые из них вы хотели бы оставить –

+0

Да, и по какой-то загадочной причине удаление этого класса не отменяет поведение наведения, @roasted. (Я подозреваю, что я сделал это неправильно, так или иначе). Тем не менее - ваше решение - лучшее. –