2016-04-12 26 views
0

Bir hamburger menüsü için kodumda yardıma ihtiyacım var.Bir diziden Hamburger menüsü

İşte
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 
    } 
}]; 

şimdiye kadar var ve dizide çalışmak için güncellemek için yukarıdaki diziyi kullanmak gerekenler: jquery menü öğelerini oluşturmak için bu diziyi kullanmak gerekir.

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> 

Ben gelen yardımı güzel olurdu.

+0

kesin bir şey isteyin, sorunuz – Nils

+0

bu işten bir keman gönderebilir çok açıktır? Seni herhangi bir yerde 'menü' kullanarak görmüyorum? – Krishna

+0

Sanırım anonim bir diziyi nasıl alacağımızı soruyorlar ve bir 'UL' –

cevap

0

jQuery .append()'u kullanarak, dizi öğelerini oluşturma için bir listeye ekleyebilirsiniz.

İşlevleri ayrı ayrı hedeflemeliyiz, ancak menu[i] öğelerini dizelere dönüştürdüyseniz bunları satır içi ekleyebileceğiniz bir çözüm var.

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

+0

Teşekkür ederiz! Şimdi menüyü gizlemeye devam edersem menüyü gizlemek için – Heyhey

+0

menüsünü gizlerdim Sadece gösterdiğiniz aynı sınıfları uygula. Gizleme mantığını içerecek şekilde kemanı güncelledim. Cevabımı faydalı bulursanız, lütfen buna göre işaretleyin. Burada animasyonla da oynayabilirsiniz, sadece bir "fadeOut()" ın siyah arkaplanı gizlediğinizde (setTimeout() 'ya da buna benzer bir şeye ihtiyacınız olacak) ateşlemeyi bitirmeyeceğini unutmayın. –