2012-09-28 4 views
0

J'essaie d'ajouter un bouton pour un menu mobile lorsque la largeur du document est inférieure à 470.Faire élément HTML basé sur de la largeur du document

Il le fait quand la page se charge d'abord, mais quand je mess avec la largeur du document réel sur mon navigateur ne change pas à côté du document. Comment puis-je y parvenir?

Le bouton devrait apparaître lorsque la largeur est inférieure à 470 et s'en aller lorsque la largeur de la page est supérieure à 470, essentiellement.

Voici mon code.

 var width = $(document).width(); 
     if (width < 470) { 
      $("<button id='menu'>Menu</button>").insertAfter("#navigation a img"); 
     } else { 
      $("<button id='menu'></button>").hide(); 
     } 

Répondre

3

Vérifiez la largeur du document à chaque changement de taille de la fenêtre.

function onresize(){ 
    var width = $(document).width(); 
    if (width < 470) { 
     if($("#menu").length){ 
       $("#menu").show(); 
     } 
     else{ 
       $("<button id='menu'>Menu</button>").insertAfter("#navigation a img"); 
     } 
    } else { 
     $("#menu").hide(); 
    } 
} 

onresize()//first call 
$(window).resize(onresize); 
+0

Si je redimensionne la fenêtre du navigateur, il continue de créer le même élément de bouton à chaque fois qu'il est redimensionné à plusieurs reprises. Les deux réponses fonctionnent ici. – wowzuzz

+0

J'ai fait le changement pour empêcher la recréation du bouton. – Anoop

+2

@Shusl '$ ('# menu'). Length! == 0' est un contrôle redondant. Ici, vous avez juste besoin de dire 'if ($ ('# menu'). Longueur)' – Ohgodwhy

3

Bind la fonction/chèques à un procédé resize dans la fenêtre:

$(window).resize(
    function(){ 
     /* do stuff in here */ 
    }); 

Simple proof-of-concept.

+0

Si je redimensionne la fenêtre du navigateur, il continue de créer le même élément de bouton chaque fois qu'il est redimensionné de façon répétée. – wowzuzz

+1

Eh bien, oui; parce que c'est ce que votre logique lui dit de faire. Vérifiez simplement que l'élément '$ ('button # menu')' n'existe pas avant de le (re) créer. –

Questions connexes