【问题标题】:JQuery : ul on hover for dropdownJQuery:ul悬停下拉
【发布时间】:2013-02-19 16:43:44
【问题描述】:

尝试使用 jQuery 的悬停来显示/隐藏 ul 项目以提供下拉效果。

这里是 jQuery。忽略警报功能

$(document).ready(function () { 

    $('ul.drop li').hover(
        function () {
            alert("asa");
            //show its submenu
            var isVisible = $(this).next('ui').is(':visible');
            alert("dvData is " + isVisible);
            var isHidden = $(this).next('ui').is(':hidden');
            alert("dvData is " + isHidden);

            $(this).next('ul').css({visibility: "visible", display: ""});

        }, 
        function () {
            //hide its submenu
            $(this).next('ul').css({visibility: "hidden", display: ""});
        }
    );

});

这里是jsp页面

<ul class="drop">
<li><a href="#">Main</a></li>
<li>Reporting
 <ul >
    <li><a href="#" target="_blank">Magellan Reports</a></li>
    <li><a href=""/>"  target="_blank">Script Reports</a></li>
 </ul>

<li><a href="<c:url value="#"/>"   target="_blank">CMS</a></li>
<li><a href="<c:url value="#"/>"  target="_blank">Operations</a></li>
</ul>

这是css

ul#nav {padding-left:16px;background-image:url(../images/buehne_5_intra.gif)}
clear {clear:both}
ul.drop a {color:#87A7CE;line-height:14px;display:block;text-decoration: none;
background-repeat:no-repeat;background-image:url(../images/diagonale_hauptnavigation.gif);background-position:right;
    height:10px;padding-right:22px; float:left;}
ul.drop, ul.drop li, ul.drop ul { list-style: none; margin: 0; padding: 0; background: #039;
color: #fff;}
ul.drop { position: relative; z-index: 597; float: left; }
ul.drop li { float: left; line-height: 1.0em; vertical-align: middle; zoom: 1; padding: 5px 10px; }
ul.drop li ul { visibility: hidden; position: absolute; top: 100%; left: 20px; z-index: 598; width: 150px; margin-left:50px;}
ul.drop ul a {color:#87A7CE;line-height:14px;display:block;text-decoration: none;height:10px;padding-left:10px; float:left;background-image:none;}
ul.drop ul li { float: none; }
ul.drop ul ul { top: -2px; left: 100%; }
.drop img{width:22px;height:24px;background-color:#039;margin-left:-20px;vertical-align:top}

我 cud 已经单独使用 css 完成了它,但是一些必需的、长的和损坏的 css 文件不允许我这样做。请帮助使用 jQuery。

【问题讨论】:

    标签: jquery hover mouseleave


    【解决方案1】:

    next() 查找下一个兄弟姐妹,它不匹配任何内容,因为您没有用于触发 &lt;li&gt;&lt;ul&gt; 兄弟姐妹。相反,您想寻找孩子,所以尝试children() 来寻找匹配的孩子。将您的 JS 修改为以下内容:

    $('ul.drop li').hover(
        function () {
            $(this).children('ul').css({visibility: "visible", display: ""});
        }, 
        function () {
            $(this).children('ul').css({visibility: "hidden", display: ""});
        }
    );
    

    您可以在此处查看演示 - http://jsfiddle.net/GoranMottram/Uxj2B/3/ - CSS 看起来需要一些工作,但至少 JS 可以工作。

    【讨论】:

    • 如果我将 li 更改为 li&lt;a href="#"&gt;Reporting&lt;/li&gt;,这将停止工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    相关资源
    最近更新 更多