2012-03-10 2 views
0

сначала, если честно, я новичок, когда дело доходит до JQuery. Я смотрел тонну учебников и читал на самом сайте jquery. В то время как я начинаю понимать это, концепция пока не «нажала» для меня.Борьба с slideToggle на вложенных списках

В настоящее время я работаю над отображением продукта, где я хочу, чтобы ящик сдвигался вниз, когда наводил курсор на изображение продукта. В этом поле содержится список моделей.

Я получил страница создана здесь:

http://www.tailwatersflyfishing.com/sage-fly-rods

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

http://www.sageflyfish.com/rods-landing.html

I «Я попытался написать код, но не смог заставить его работать. Это то, что я в настоящее время на странице:

$('document').ready(function() { 
    $('.rod-tall').children('.rod-inner').children('.rod-list').hide(); 
    $('.rod-list ul div li ul li a').click(function() { 
     window.location = $(this).attr('href'); 
    }); 

    $(".rod-tall .rod-inner").mouseenter(function() { 
    $(this).children('.rodlist').children('.desc-box').slideToggle('fast'); 
    }); 

    $(".rod-tall .rod-inner").mouseleave(function() { 
    $(this).children('.rodlist').children('.desc-box').slideToggle('fast'); 
    }); 
}); 

---- UPDATE ----

теперь у меня это включено в моей странице:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('.rod-list').hide(); 
    $('.rod-tall').hover(function() { 
    $('.rod-list',this).slideToggle('fast'); 
    },function() { 
    $('.rod-list',this).slideToggle('fast'); 
    });​ 
</script> 

Все ошибки прототипа прошло. НО я получаю эту ошибку (Uncaught SyntaxError: Неожиданный токен ILLEGAL), который, я надеюсь, является причиной того, что этот скрипт не работает. Есть ли недопустимый символ или невидимый символ, который вызывает эту ошибку?

Спасибо!

+0

Нет кавычки документа в '$ ('документ'). ГОТОВ ('. – j08691

+0

Хорошо. Я вижу прогресс. По крайней мере, у меня есть несколько ящиков, скрывающихся. Вот живая версия: http://jsfiddle.net/mattj06/TgFvP/14/ –

ответ

0

Как об этом (jsFiddle example):

JQuery:

$('.rod-list').hide(); 
$('.rod-tall').hover(function() { 
    $('.rod-list',this).slideToggle('fast'); 
},function() { 
    $('.rod-list',this).slideToggle('fast'); 
}); 

CSS:

.rod-list { 
    position:absolute; 
} 
+0

Это работает отлично! Благодаря! Поэтому я думаю, мне не нужен $ ('document'). Ready() ;? Кроме того, я реализовал это на сайте, и я не вижу никаких эффектов. Библиотека jQuery включена, поэтому я не уверен, почему она не работает на сайте. Есть идеи? –

+0

Нет, вам, вероятно, следует сохранить часть document.ready, поскольку она просто запускает код при загрузке DOM.Код выше (и в скрипке) должен существовать вместе с вызовом document.ready. – j08691

+0

Что касается того, почему он не работает на вашем сайте, когда я загружаю вашу страницу и открываю Firebug, я вижу несколько ошибок, большинство связанных с прототипом. – j08691

0

Существует ошибка на странице:

window.location = $(this).attr('href';) 

с запятой находится внутри скобок.

+0

Хорошо, я только что исправил это, и я до сих пор не вижу никаких изменений. Действительно ли мой код выглядит корректно? –

0

Является ли это то, что вы пытаетесь сделать:

$(document).ready(function() { 
    $('.rod-list').hide(); 

    $('.rod-tall').on({ 
     mouseenter: function() { 
      $('.rod-list', this).slideDown('fast'); 
     }, 
     mouseleave: function() { 
      $('.rod-list', this).slideUp('fast');  
     } 
    }); 
});​ 

FIDDLE

+0

Спасибо adeneo - это отлично работает, но я хотел, чтобы изображения вставали на свои места. Вышеприведенный пример с абсолютным позиционированием сделал трюк. Благодаря! –