Я новичок в jQuery, и первое, что я сделал, это то, что я считаю классической задачей: анимировать выпадающее меню.#navBar - это div, содержащий ul, и меню открывается, когда пользователь наводит курсор мыши на li.Вот код:
$(document).ready(function()
{
$("#navBar>ul>li").hover(function()
{
var $menu = $(this).find("div");
if ($menu.queue().length > 1) $menu.queue().length = 1;
$menu.slideDown(200).css("z-index", "1");
},
function()
{
$(this).find("div").delay(500).slideUp(400).css("z-index","0");
});
});
Мой вопрос относится к строке:
if ($menu.queue().length > 1) $menu.queue().length = 1;
Я сделал это, чтобы избежать проблемы постановки в очередь бесконечных анимаций, избегая при этом скачка использования стопа (правда правда).Это прекрасно работает, но я чувствую себя неловко из-за явного назначения длины очереди (никакой другой язык программирования, с которым я знаком, не позволяет мне делать это).
Я боюсь, что, назначая длину, я простоограничение того, насколько далеко заходит очередь jQuery, но не удаление фактически помещенных в очередь анимаций и, возможно, утечка памяти.На самом деле я хотел бы просто удалить любые анимации, находящиеся в очереди, кроме первой, но, похоже, не могу найти способ сделать это.
В любом случае, как я уже сказал, теперь он работает отлично.Может кто-нибудь сказать мне, если я делаю что-то глупое?