想只在主菜单而不是子菜单上有Jquery效果

时间:2013-04-26 21:31:25

标签: jquery css

很高兴出现在Stack Overflow上:)

我最近为我的WordPress菜单实现了一些Jquery淡入/淡出代码。我实际上在这个资源上使用了here找到的代码。显然,它似乎是一个非常常用的Jquery代码。

我能够将它整合到我的WordPress菜单中。主要导航上的一切都很好用。但是,子菜单采用了我不想要的主导航的相同高度和Jquery效果。我希望子菜单更薄,只需更改背景颜色。

我的问题是如何在使用这个优秀的jquery脚本时让主导航和子导航的样式彼此独立。我已经粘贴了相关的css代码,并希望有人能够提供一些见解。它基于标准的wordpress菜单css,我希望它是非常不言自明的。

#access {
    margin:0; 
    padding:0;
    list-style:none;
    line-height:60px;
}
#access ul {
    font-size: 16px;
    font-family: 'swis721_ltcn_btlight';
    text-transform:uppercase;
    list-style: none;
    margin: 0 0 0 -0.8125em;
    padding-left: 0;
    display:inline-block;
    text-align: center;
}
#access li {
    float:left; 
    background:url(images/default.jpg) no-repeat center center; /
    width:150px;    
    height: 50px;                       
    position:relative;          
}
#access li a {
    z-index:20;     
    display:block;
    position:relative;
    color:#777;
    border-right: 1px dotted #cccccc;
}

#access li .hover {
    background:url(images/over.jpg) no-repeat center center;
    position:absolute;  
    width:150px;    
    height:50px;
    left:0;
    top:0;  
    z-index:0;      
    display:none;       
}

#access ul ul {
    height: 17px !important;
    -moz-box-shadow: 0 3px 3px rgba(0,0,0,0.2);
    -webkit-box-shadow: 0 3px 3px rgba(0,0,0,0.2);
    box-shadow: 0 3px 3px rgba(0,0,0,0.2);
    display: none;
    float: left;
    margin: 0;
    position: absolute;
    top: 50px;
    left: 0;
    width: 150px;
    z-index: 99999;
}

#access ul ul a {
    background:#ccc;
    border-top: 1px dotted #ffffff;
    border-bottom: 1px dotted #ffffff;
    color: #FFF;
    font-size: 12px;
    font-weight: normal;
    line-height: 1.1em;
    text-align: left;
    padding: 5px 10px;
    width: 130px;
    height: 17px;
}

#access ul ul :hover > a {
    height:17px !important;
}

基本上,当我尝试更改“#access ul ul a”或“#access ul ul:hover> a”中的子菜单样式时,主导航的高度和悬停效果会延续。

我已经包含了一个问题示例的链接。如果将鼠标悬停在“事件和服务”上,您将看到子菜单问题。

http://streetsmartetiquette.com/wordpress/about/

下面还添加了Jquery代码:

jQuery(document).ready(function($) {

    //Append a div with hover class to all the LI
    $('#menu-navmenu li').append('<div class="hover"><\/div>');


    $('#menu-navmenu li').hover(

        //Mouseover, fadeIn the hidden hover class  
        function() {

            $(this).children('div').stop(true, true).fadeIn('1000');    

        }, 

        //Mouseout, fadeOut the hover class
        function() {

            $(this).children('div').stop(true, true).fadeOut('1000');   

    }).click (function () {

        //Add selected class if user clicked on it
        $(this).addClass('selected');

    });

});

谢谢大家的帮助!

2 个答案:

答案 0 :(得分:0)

我没有太多时间,但我快速地把它扔了一遍:

HTML

<nav id="access">
    <div class="menu-navmenu-container">
        <ul>
            <li><a href="/">Link 1</a></li>
            <li>
                <a href="/">Link 2</a>
                <ul>
                    <li><a href="/">Sub Link 1</a></li>
                    <li><a href="/">Sub Link 2</a></li>
                </ul>
            </li>
        </ul>
    </div>
</nav>

CSS

#access {}
.menu-navmenu-container { width : 960px; }

#access ul {
    list-style : none;
}
#access li {
    float : left;
    position : relative;
    text-align : center;
    width : 150px;
}
#access li a {
    border-left : 1px solid #ccc;
    display : block;
    line-height : 50px;
}
#access li:last-child a { border-right : 1px solid #ccc; }
#access li a:hover {
    background-image : url("http://streetsmartetiquette.com/wordpress/wp-content/themes/clean/images/over.jpg");
}

#access ul ul {
    border-top : 1px solid #ccc;
    left : 0;
    padding : 0;
    position : absolute;
}
#access ul ul a {
    border-bottom : 1px solid #ccc;
    line-height : normal;
    padding : 5px 0;
}
#access ul ul a:hover {
    background-color : blue;
    background-image : none;
    color : white;
}

这是一个link to the fiddle。这是免费的JavaScript,但如果需要,你可以实现你的JavaScript。

答案 1 :(得分:0)

嗨我认为你的问题出现在你的CSS中你没有将你菜单中的第一个ul li和你子菜单中的ul li分开

使用

创建新的CSS
#access .sub-menu li {  
    height: 18px; // the height you need for the submenu or anything else you ant to change                                
}

#access .sub-menu li .hover {
height: 18px;// the height you need for the hover effect from the jquery                                
}