获取主菜单项列表

时间:2017-07-20 18:33:37

标签: javascript jquery html css

我正面临一个场景,我需要从主菜单中获取所有项目,所以我可以在没有它的不同地方使用相同的菜单,我只能访问前端,js表和css。

这是菜单html:nav以这种方式构建(body.home header nav)

  <ul class="menu-principal">
        <li class="text1 "><a href="#" class="text1" target="">text1</a></li>   
        <li class="text2 "><a href="#" class="text2" target="">text2</a></li>       
        <li class="text3 "><a href="#" class="text3" target="">text3</a></li>       
        <li class="text4 "><a href="#" class="text4" target="">text4</a></li>                       
    </ul>
<script>
     $(".menu-principal > ul > li > a").each(function () {
        var children = $(this).next('ul').children();
        alert(children.length);
     });

 /*****************************/

  $("body header nav .menu-principal").each(function() {
      var children = $(this).children();
      alert(children.length);
   });

  /******************/
  $(".menu-principal").each(function() {
      var children = $(this).children();
      alert(children.length);
   }); 
</script>

所有我需要的是能够获取菜单列表,因为当选择语言时菜单是多种语言,获取也应该以所选语言获得列表。

以上是我尝试过的3次尝试但不幸运。

3 个答案:

答案 0 :(得分:2)

我修改了你的选择器。它能够访问锚标记的文本。

&#13;
&#13;
$(".menu-principal > li > a").each(function () {
    console.log($(this).text())
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="menu-principal">
        <li class="text1 "><a href="#" class="text1" target="">text1</a></li>
        <li class="text2 "><a href="#" class="text2" target="">text2</a></li>
        <li class="text3 "><a href="#" class="text3" target="">text3</a></li>
        <li class="text4 "><a href="#" class="text4" target="">text4</a></li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

这就是你要找的东西:

// .menu-principal is the <ul> so you don't want to look for a <ul>
// that is a child of it.
$(".menu-principal > li > a").each(function () {
  console.log(this.href);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="menu-principal">
  <li class="text1 "><a href="http://cnn.com" class="text1" target="">text1</a></li>
  <li class="text2 "><a href="http://fox.com" class="text2" target="">text2</a></li>
  <li class="text3 "><a href="http://cbs.com" class="text3" target="">text3</a></li>
  <li class="text4 "><a href="http://nbc.com" class="text4" target="">text4</a></li>
</ul>

答案 2 :(得分:1)

  

从主菜单中获取所有项目,以便我可以在不同的菜单上使用sme菜单   没有它的地方

如果您想在其他地方使用相同的菜单,可以使用clone()。只需复制元素并将其附加到别处。

&#13;
&#13;
var menu = $('.menu-principal').clone();
$('body').append(menu);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="menu-principal">

        <li class="text1 "><a href="#" class="text1" target="">text1</a></li>

        <li class="text2 "><a href="#" class="text2" target="">text2</a></li>

        <li class="text3 "><a href="#" class="text3" target="">text3</a></li>

        <li class="text4 "><a href="#" class="text4" target="">text4</a></li>

    </ul>
&#13;
&#13;
&#13;