Wordpress 組み込み関数を使用して作成されているトップレベルのナビゲーションがあります。次に、最上位のナビゲーションのページ ID の 1 つを取得して、その子ページのリストを作成する別の関数があります。この div を、対応するトップ メニュー項目のホバー時にスライドさせたいと思います。
<header>
...
<nav class="clear screen">
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 1,) ); ?>
</nav>
</header>
<div id="dropdown-contain">
<ul class="solutions-dropdown">
<li><a href="/solutions/">By Industry</a></li>
<li><a href="/solutions/by-module/">By Module</a></li>
</ul>
<?php
// use wp_list_pages to display parent and all child pages all generations (a tree with parent)
$parent = 85;
$args=array(
'child_of' => $parent
);
$pages = get_pages($args);
if ($pages) {
$pageids = array();
foreach ($pages as $page) {
$pageids[]= $page->ID;
}
$args=array(
//'title_li' => 'Tree of Parent Page ' . $parent,
'include' => implode(",", $pageids)
);
wp_list_pages($args);
}
?>
</div>
#dropdown-contain がスタイル シートに隠されています。wp_nav_menu が最上位のリストを作成しているため、サブリストをネストされたリストにすることはできません。そのため、別の div として作成しました。
これが私が現時点で持っているjqueryです:
$(document).ready(function() {
$("li.page-item-6").mouseenter(function(){
$('#dropdown-contain').slideDown().clearQueue();
$("#dropdown-contain").mouseover(function(){
$('#dropdown-contain').stop().css('display', 'block');
});
});
$("#dropdown-contain").mouseout(function(){
$('#dropdown-contain').clearQueue().slideUp();
});
});
ここでの問題は、終了する前にサブナビにカーソルを合わせないと、サブナビが開いたままになることです。最上位の要素にカーソルを合わせただけで、サブ メニューにカーソルを合わせていない場合、サブ メニューは、カーソルを置いたり離したりするまで開いたままになります。だから、私はこれを含めようとしました:
$("li.page-item-6").mouseout(function(){
$('#dropdown-contain').clearQueue().slideUp();
});
これを含めると、サブメニューの動作が少しおかしくなりました。メニューが下にスライドし終わる前に一番上のリスト項目にカーソルを合わせて離すのが早すぎると、次にホバーすると同じポイントまでしかスライドしません。そのため、急いで数回ホバーした後、ページを更新するまでメニューのスライドが完全に停止します。
要約すると、1 つのリスト項目にカーソルを合わせて、完全に別の div のスライド ダウンをトリガーします。リスト項目または div のいずれかからマウスを離すと、メニューはぎこちなくジャンプすることなく上にスライドします。誰かが私を助けてくれたり、役立つリンクを見つけてくれたりしたら、本当に感謝しています!