0
に、私は私のウェブサイトのモバイルメニューのためにこのようなスクリプトを使用しています:それは正常に動作し、任意のサブメニューをクリックすると、サブメニュー1.
を示して最初のレベル(ルート)でjQueryのドロップダウンメニュー
<script type="text/javascript">
$(document).ready(function(){
$('ul#menu > li').on('click', function(e) {
//console.log("root");
e.preventDefault();
var cat = $(this).attr('id');
if ($(this).hasClass('open')) {
console.log("remove: " + cat);
$(this).removeClass('open');
$('#menu #sub1').remove();
$('#menu > #'+ cat +' > a > i').removeClass('fa-angle-down');
} else {
var url = 'index.php?route=test/categoryx/child§ion=' + section + '&category_id=' + cat;
$(this).addClass('open');
$('#menu #sub1').remove();
$('#menu > #'+ cat +' > a > i').toggleClass('fa-angle-down');
$($("<ul class='submenu' id='sub1'>").load(url + "#myContainer"))
.insertAfter($('#menu #' + cat + ' a'));
}
clicked == 'sub';
});
//console.log("clicked: " + clicked);
$("#menu").on("click", "#sub2 li a", function(e) {
e.preventDefault();
var _leaf = $(this).attr('class');
if (_leaf == 'leaf') {
} else {
if ($(this).hasClass('open')) {
$(this).removeClass('open');
$('#menu #sub3').remove();
$('#menu #sub2 > #'+ cat +' > a > i').removeClass('fa-angle-down');
} else {
var url = 'index.php?route=test/categoryx/child§ion=' + section + '&category_id=' + cat;
$(this).addClass('open');
$('#menu #sub3').remove();
$('#menu #sub2 > #'+ cat +' > a > i').toggleClass('fa-angle-down');
$($("<ul class='submenu' id='sub3'>").load(url + "#myContainer"))
.insertAfter($('#menu #' + cat + ' a'));
}
}
});
var section = "<?php echo $section; ?>";
console.log("section: " + section);
var clicked = 'root';
$("ul#menu > li").on("click", "#sub1 li", function(e) {
e.preventDefault();
clicked = 'sub';
var cat = $(this).attr('id');
var _leaf = $(this).attr('class');
if (_leaf == 'leaf') {
} else {
if ($(this).hasClass('open')) {
$(this).removeClass('open');
$('#menu #sub2').remove();
$('#menu #sub1 > #'+ cat +' > a > i').removeClass('fa-angle-down');
} else {
var url = 'index.php?route=test/categoryx/child§ion=' + section + '&category_id=' + cat;
$(this).addClass('open');
console.log("sub: " + cat);
$('#menu #sub2').remove();
$('#menu #sub1 > #'+ cat +' > a > i').toggleClass('fa-angle-down');
$($("<ul class='submenu' id='sub2'>").load(url + "#myContainer"))
.insertAfter($('#menu #sub1 #' + cat + ' a'));
}
}
});
console.log("clicked: " + clicked);
});
</script>
1のリンクでは、サブメニュー2を表示する代わりに、サブメニュー1を閉じます。私はさまざまなアプローチを試みましたが、残念ながら同じ結果になりました。
あなたはJSフィドルを作ることができますか?あなたをそのように手助けするのは簡単な方法でしょう。 – ZombieChowder
@ZombieChowder:https://jsfiddle.net/mynameismosa/rdx6cb0b/ – Kardo
は提供されたフィドルでは何もクリックできません。私が最初のメニューにカーソルを置くたびにポップアップします。 – ZombieChowder