0

我最近做了这个简单的导航,你有几个有下拉菜单的链接。首先它仅在 CSS3 中,但后来我决定添加一些 jQuery 以使下拉列表在一定时间后出现。(大部分 jQuery 代码是基于另一个线程中给出的答案)

基本上,我的问题是我无法定位正确的元素悬停,因此当我悬停一个 li 元素时,我的所有下拉列表都会显示。我尝试尽可能多地调整它,但我找不到合适的代码。

任何回复都非常感谢!

我的菜单如下所示:

<ul id="generale">
                <li><a href="#">Item 1</a></li>
                <li><a href="#">Item 2</a></li>
                <li>
                    <a href="#">Item 3</a>
                    <ul>
                        <li><a href="#">Subitem 1</a></li>
                        <li><a href="#">Subitem 2</a></li>
                        <li><a href="#">Subitem 3</a></li>
                        <li><a href="#">Subitem 4</a></li>
                        <li><a href="#">Subitem 5</a></li>
                    </ul>     
                </li>
                <li>
                    <a href="#">Item 4</a>
                    <ul>
                        <li><a href="#">Subitem 1</a></li>
                        <li><a href="#">Subitem 2</a></li>
                        <li><a href="#">Subitem 3</a></li>
                        <li><a href="#">Subitem 4</a></li>
                        <li><a href="#">Subitem 5</a></li>
                    </ul>  
                </li>
                <li><a href="#">Item 5</a></li>
                <li><a href="#">Item 6</a></li>
            </ul>

和我的 jQuery:

var navTimers = [];  
            $( "#generale > li" ).hover(
                function () {  
                    var id = jQuery.data( this );  
                    var $this = $( this ); 

                    navTimers[id] = setTimeout( function() {  
                        $('#generale ul').fadeIn(200); 
                        navTimers[id] = "";  
                    }, 300 );  
                },  
                function () {  
                    var id = jQuery.data( this );  
                    if ( navTimers[id] != "" ) {  
                        clearTimeout( navTimers[id] );  
                    } else {  
                        $('#generale ul').fadeOut(200);
                    }  
                }  
            );  
4

1 回答 1

1

您的 fadeIn 和 fadeOut 函数当前针对元素ul内的所有 s 。#generale

尝试改变

$('#generale ul').fadeIn(200); 

$this.find('ul').fadeIn(200);

$('#generale ul').fadeOut(200);

$this.find('ul').fadeOut(200); // you'll also have to define $this = $(this)
于 2012-06-26T17:44:17.737 回答