Нужна помощь в исправлении этого выпадающего скрипта jQuery - PullRequest
0 голосов
/ 22 сентября 2009

Я работаю над сценарием для выпадающего меню. Пока все работает нормально, но мне нужно добавить еще одну вещь, и я не могу понять это. Вот текущий скрипт:


 $j('ul.menu > li').hover(

    function() { var ulHeight = $j('ul', this).height(); $j(this).children('ul').css({height: 0}).stop().animate({height: ulHeight}, 400); },
    function() { $j(this).children('ul').stop().animate({height: 0}, 400);   }
);

Мне нужно вернуть высоту UL к ее первоначальному размеру и установить для дисплея значение none, чтобы он мог работать снова. Теперь так и есть, так как высота устанавливается на 0 при выходе, в следующий раз, когда «ulHeight» берется, это 0.

Я попробовал вот так, но без радости:


 function() { $j(this).children('ul').stop().animate({height: 0}, 400).css({height: ulHeight});   }

У кого-нибудь есть идеи?

Ответы [ 2 ]

1 голос
/ 22 сентября 2009

Ваши подменю не отображаются вообще ...

но, в конце концов, зачем изобретать велосипед? http://css -tricks.com / simple-jquery-dropdowns / или Superfish


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

.css({"display": "block"});
.css({"display": "none"});

с

.show();
.hide();

соответственно, и вы можете использовать .hover вместо .mouseenter и .mouseleave

Проверьте это здесь ... Я не мог редактировать ваш код в jsbin (окно редактирования было 3 строки высотой, и я не мог прокрутить), поэтому я поместил его в pastebin.

0 голосов
/ 22 сентября 2009

Значением по умолчанию для свойства высоты является auto. Вы должны установить это вместо 0, когда прячетесь.

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