2

メニュー項目をスライドすると完全に下にスライドし、メニュー項目を離れると完全に上にスライドするJqueryドロップダウンメニューを作成しようとしました。

唯一の問題は、マウスをサブメニューに下に移動するとスライドアップし、メニュー項目またはサブメニューを離れるまで開いたままになることです。

HTML

<ul>
    <a href="dashboard.php"><li class="dashboard icon-home">Dashboard</li></a>
    <a href="#"><li class="icon-pages">Paginas</li></a>
    <a class="trigger" href="#"><li class="afbeeldingen icon-image">Afbeeldingen</li></a>
    <div class="adminsubmenu">
        <a href="#">Submenu item</a>
        <a href="#">Submenu item</a>
        <a href="#">Submenu item</a>
    </div>
    <a href="#"><li class="icon-users">Gebruikers</li></a>
    <a href="#"><li class="icon-settings">Instellingen</li></a>
</ul>

CSS

div#adminmenu ul li {
    font-size:13px;
    font-weight:600;
    padding:7px 0 7px 28px;
    background-color:#fff;
    width:175px;
    border-bottom:1px solid #c2c2c2;
    border-right:1px solid #c2c2c2;
}

div.adminsubmenu {
    height:100px;
    width:175px;
    background:url(../images/adminmenu_bg.png) repeat-y top right #e6e6e6;
}

Jクエリ

$(document).ready(function(){

            $(".adminsubmenu").hide();

            $("a.trigger").mouseover(function(){
                $(".adminsubmenu").slideDown();
            }).mouseleave(function(){
                $(".adminsubmenu").slideUp();
            });

        });

そして、ここにフィドルがあります

4

3 に答える 3

3

HTML を有効にするには、の<a>内側にを配置する必要があります。その逆ではありません。<li>

とは言っても、JavaScript を変更して、まさにあなたがやりたいことを行うだけです。

$("a.trigger").mouseover(function(){
            $(".adminsubmenu").slideDown();
        });
$('.adminsubmenu').mouseleave(function(){
            $(".adminsubmenu").slideUp();
        });

さらに良いのは、トリガー要素内にサブメニューを配置することです。そうすれば、マウスがサブメニューの上にある限り、トリガーの上にカーソルを置いたままになります。

<li class="afbeeldingen icon-image trigger">
    <a class="" href="#">Afbeeldingen</a>
    <ul class="adminsubmenu">
        <li><a href="#">Submenu item</a></li>
        <li><a href="#">Submenu item</a></li>
        <li><a href="#">Submenu item</a></li>
    </ul>
</li>

新しい JS:

$(".trigger").mouseover(function () {
    $(".adminsubmenu").stop().slideDown();
}).mouseleave(function () {
    $(".adminsubmenu").stop().slideUp();
});

http://jsfiddle.net/mblase75/B3GB6/

于 2013-11-06T22:27:15.350 に答える
1
<li><a ... </a></li>

それ以外の

<a><li> </li></a>

実は逆なんです

于 2013-11-06T22:35:14.090 に答える