I have a menu which works perfect for 1st and 2nd level only, but I need to go deeper and show all sub levels. Maybe it's better to use JQuery function, but I don't know how! The menu is something like this when it loads:
UPDATE
The code that generates sub levels:
foreach ($categories as $category) {
$data['x'] .= '<li><a class=' . $category['category_id'] . ' id=' . $category['category_id'] . ' data-id=' . $category['category_id'] . '>' . $category['name'] . '</a></li>';
}
The code which generates ROOT categories:
<ul id="mnav" style="padding-top: 80px; background-color: #337ab7;">
<?php foreach ($categories as $category) { ?>
<li><a id="<?php echo $category['category_id']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a></li>
<?php } ?>
</ul>
Compiled PHP - HTML:
<ul id="mnav" style="padding-top: 80px; background-color: #337ab7;">
<li><a id="24" class="list-group-item active">Machinery</a>
<ul class="sub" id="sub1">
<li><a class="2420" id="2420" data-id="2420">Agriculture Machinery Equipment</a></li>
<li><a class="2407" id="2407" data-id="2407">Apparel Textile Machinery</a></li>
<li><a class="2409" id="2409" data-id="2409">Building Material Machinery</a></li>
<div class="list-group"> </div>
</ul>
</li>
<li><a id="29" class="list-group-item active">Packaging & Printing</a></li>
<li><a id="26" class="list-group-item active">Mechanical Parts & Fabrication Services</a></li>
</ul>
To achieve this, I'm using such a script:
<script type="text/javascript">
$(document).ready(function(){
$('ul#mnav > li > a').on('click', function(e) {
console.log("Level 1");
e.preventDefault();
var cat = $(this).attr('id');
var url = 'index.php?route=test/categoryx/child&category_id=' + cat;
$('#mnav #sub1').remove();
$( $("<ul class='sub' id='sub1'>").load(url + "#myContainer") ).insertAfter( '#mnav #' + cat );
});
$('ul#sub1 a').on('click', function(e) {
console.log("Level 2");
e.preventDefault();
var cat = $(this).attr('id');
var url = 'index.php?route=test/categoryx/child&category_id=' + cat;
$('#sub2').remove();
$( $("<ul class='sub' id='sub2'>").load(url + "#myContainer") ).insertAfter( 'ul#sub1 #' + cat );
});
</script>
I tried different ways to get access to 2nd level but it's not successful, I tried many different things.