javascript - 数组中的汉堡菜单

标签 javascript jquery html css arrays

我的汉堡菜单代码需要帮助。我需要使用这个数组在 jquery 中创建菜单元素:

var menu = [{
  'title': 'Save',
  'onclick': function() {
    alert('Open clicked');
  }
}, {
  'title': 'Load',
  'onclick': function() {
    alert('Close clicked');
  }
}, {
  'title': 'Hide menu',
  'onclick': function() {
    //put a code to close menu
  }
}];

这是我目前所拥有的,我需要使用上面的数组来更新它以使用该数组。

jQuery

$(document).ready(function() {

$('#menulink').click(function(event) {
    event.preventDefault();
    if($('.navigation-wrapper').hasClass('show-menu')) {
        $('.navigation-wrapper').removeClass('show-menu');
        $('.navigation').hide();
        $('.navigation li').removeClass('small-padding');
    } else {
        $('.navigation-wrapper').addClass('show-menu');
        $('.navigation').fadeIn();
        $('.navigation li').addClass('small-padding');
   }
});

  });

HTML

<a id="menulink" href="#">
    <div class="hamburger-wrapper">
     <div class="inner-hamburger-wrapper">
          <div class="hamburger"></div>
        <div class="hamburger"></div>
        <div class="hamburger"></div>
    </div>
    <div class="menu-title"><p>Menu</p></div>
</div>
</a>

<ul class="navigation">
    <li><a href="#">Home</a></li>
    <li><a href="#">Menu Item 2</a></li>
    <li><a href="#">Menu Item 3</a></li>
    <li><a href="#">Menu Item 4</a></li>
    <li><a href="#">Menu Item 5</a></li>
    <li><a href="#">Menu Item 6</a></li>
  </ul>

如果能得到任何帮助,我会很高兴。

最佳答案

使用 jQuery .append()您可以将数组项附加到列表中进行创建。

我们必须单独定位函数,但包含一个解决方案,如果您将 menu[i] 项转换为字符串,您可以将它们内联。

  // Generate an element, append index to referencing the executing function
  $.each(menu, function(index, element) {
    $('ul.navigation').append('<li data-index="'+index+'"><a href="#">'+element.title+'</a></li>');
  });

  // Run the executing function associated with item
  $('ul.navigation > li').click(function() {
    var item = $(this).attr('data-index');
    menu[item].onclick();
  });

  // This could be done easier like so:
  //  $.each(menu, function(index, element) {
  //    $('ul.navigation').append('<li data-index="'+index+'"><a href="#" onclick="'+element.onclick+'">'+element.title+'</a></li>');
  // });
  // but would require modifying the menu[i] items' functions to just be strings

Here's an updated Fiddle.

关于javascript - 数组中的汉堡菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36575513/

相关文章:

javascript - 如何从ajaxError获取ajax持续时间

html - 当屏幕缩小时,div 不会停留在同一个地方并重新调整大小

javascript - Uncaught Error : [$injector:modulerr with angualrJs when i use routing

javascript - Jquery JScrollPane - 设置滚动速度/灵敏度

javascript - 为什么不推荐 "$().ready(handler)"?

php - $.get 函数不在 Chrome 中运行,但在 IE 和 FireFox 中运行

javascript - 菜单栏下推正文,链接未正确对齐

javascript - 动画完成后如何在 JQuery 中执行某些操作()

javascript - div显示内联隐藏

javascript - 使用 jquery/javascript 执行以下操作的最佳做​​法是什么?