使用jQuery获取所有子菜单li元素

时间:2014-09-24 14:52:04

标签: jquery html

我试图用jQuery获取所有菜单和子菜单。 我有一些代码可以逐个获取主菜单,然后我尝试运行代码来获取每个菜单的子菜单。

我已经将它列在一起列出所有子菜单,但由于某种原因它将所有子菜单显示为单个链接。

您可以在页脚http://techno-rezef.xcore.co.il/index.php?route=product/category&path=20

上看到它

这是我遇到了麻烦 - 编辑=工作代码=已解决

  jQuery('.six.columns.column').each(function() { // Get each main menu
      var currentCol = jQuery(this);
      var niddle = jQuery(this).children('h3').text();
      var getMainMenu = jQuery('#boss_menu > ul > li > a:contains("' + niddle + '")');
      var fiveArow = 1;

      // Get each sub menu
      getMainMenu.parent('li').find('.dropdown > .option > ul > li > a > span').each(function() {
          var subMenuURL = jQuery(this).parent('a').attr('href');

          if (fiveArow <= 5) { // Get the first 5 menus for each category
              addRow(subMenuURL, jQuery(this), currentCol);
              fiveArow = fiveArow + 1;
          }
      });
  });

  function addRow(subMenuURL, listSubMenus, currentMenu) {
      currentMenu.find('ul').append('<li><a href="' + subMenuURL + '">' + listSubMenus.text() + '</a></li>');
  }

2 个答案:

答案 0 :(得分:0)

它将它们全部显示为单个超链接,因为您正在此功能中进行所有收集。你应该服用 getSubMenusHTML += '<li><a href="' + subMenuURL + '">' + listSubMenus.text() + '</li></a>';

并将其放在一个单独的函数中。然后,在您的函数中,调用该函数。像这样:

    jQuery('.six.columns.column').each(function() { // Get each main menu
    var niddle = jQuery(this).children('h3').text();
    var getMainMenu = jQuery('#boss_menu > ul > li > a:contains("' + niddle + '")');

    // Get each sub menu
    var listSubMenus = getMainMenu.parent('li').find('.option > ul > li > a > span');
    var subMenuURL = listSubMenus.parent('a').attr('href');

    addLink(subMenuURL, listSubMenus);
});

  function addLink(subMenuURL,listSubMenus) {
    getSubMenusHTML +=  '<li><a href="' + subMenuURL + '">' + listSubMenus.text() + '</a></li>';
  }

这是未经测试的,但我很确定这会解决问题

编辑:另外,注意到您有<li><a></li></a>。不确定它会引起什么问题,但你应该关闭之前的

  • <li><a></a></li>
    

    编辑: 而不是:

    getSubMenusHTML +=  '<li><a href="' + subMenuURL + '">' + listSubMenus.text() + '</a></li>';
    

    执行:

    getSubMenusHTML.append('<li><a href="' + subMenuURL + '">' + listSubMenus.text() + '</a></li>');
    

    如果你要将这些项添加到ul,那么make getSubMenusHTML:

    var getSubMenusHTML = $('#your_Ul_ID');
    
  • 答案 1 :(得分:0)

    解决。 为我要输出并修复它的每个子菜单添加了另一个循环。 现在它可以工作