メニューを作成していますが、このメニューでいくつかのタブ (メニュー項目) を「slideToggle」するオプションが必要です。そのため、「中学校」というタブがあり、ユーザーがそこをクリックすると、他のタブが「表示」されます。
唯一の問題は、メニューが自動的に生成され、「中等学校」には、ユーザーがそのリンクにもアクセスできる必要があるため、削除できない href リンクがあることです。
いくつかの調査の後、私はこれを思いつきました:
$('#menu li a, #menu li').click(function() {
$(this).find("ul").slideToggle("slow");
switch( $('#menu ul.menu li ul').css('display') ){
case "none":
return false;
break;
case "list-item":
return true;
break;
};
});
しかし、ユーザーがリンクをクリックして他のタブを開くと、スクリプトはタブを「slideToggle」しません。event.preventDefault();
後でリンクをアクティブにする必要があるため、機能しなかった方法も試しました。そして、preventDefault のカウンター関数が見つかりませんでした。
したがって、ユーザーがタブをクリックすると、さらにタブが開きます。
そのため、誰かが「情報」をクリックすると、他のタブがスライドダウンし、他のタブがダウンしたときに「情報」のページに移動するには、「情報」へのリンクを再度クリックできるようにする必要があります。
したがって、私が探しているのは、リンクに移動せずにリンクをクリックできるようにする方法ですが、タブを「slideToggeling」し、タブが「表示」されたときにリンクを再度アクティブにする必要があります。
編集:このページがモバイルページであることを指定するのを忘れていたので、マウスオーバーとホバーは機能しません...
解決済み このコードは私の問題を解決しました:
$('#menu ul.menu li.expanded').each(function(i){
switch(i)
{
case 0:
$(this).addClass("open");
break;
case 1:
$(this).addClass("open");
break;
case 2:
$(this).addClass("open");
break;
case 3:
$(this).addClass("open");
break;
case 4:
$(this).addClass("open");
break;
}
$('#menu li').click(function() {
if( $(this).find("ul").css('display') == "none" ){
$('#menu li ul.menu').slideUp("fast");
}
$(this).find("ul").slideDown("slow");
});
$('#menu li.open a').on('click', function(e) {
var tabs = $(this).parent().find('ul');
if( tabs.css('display') == "none") {
e.preventDefault();
$('#menu li ul.menu').slideUp("fast");
tabs.slideDown("slow");
}
});
助けてくれてありがとう!