2017-05-27 14 views
1

私は第1レベルと第2レベルのためだけに機能するメニューを持っていますが、もっと深くなり、すべてのサブレベルを表示する必要があります。おそらく、JQuery関数を使うほうが良いかもしれませんが、どのようにしたらいいのでしょうか? メニューがロードされたときに、このようなものである:jQuery関数の作成方法は?

UPDATE
のサブレベルを生成するコード:

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>'; 
} 

ROOTカテゴリ生成コード:

<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> 

コンパイル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 &amp; Printing</a></li> 
    <li><a id="26" class="list-group-item active">Mechanical Parts &amp; Fabrication Services</a></li> 
</ul> 

これを達成するために、私はそのようなスクリプトを使用しています:

<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> 

私は第二レベルへのアクセスを得るためにさまざまな方法を試してみましたが、それは成功していないですが、私は多くの異なるものを試してみました。

+0

を"。そういうわけで、onclick関数はトリガーリングではありません。 –

+0

HTMLで 'mnav'を見ることができないので、コンパイルされたPHPも入れてください –

+0

タグではなくPHPの問題でしょうか? –

答えて

0

あなたは試すことができます:

$(".drop").on("click", "li", function (event) { 
    console.log('a'); 
}); 

かのfind()関数で使用して:あなたは `のid = "SUB1"`や `ID =" mnavを持つ任意の要素を持っていない

$(".drop").find("li").click(function(){ 
    alert("You clicked on li " + $(this).text()); 
}); 
+0

".drop"は何か分かりませんでしたが、とにかく "#sub1"を試しましたが、何も起こりません。 – Kardo

関連する問題