2013-08-13 6 views
3

Je rencontre des problèmes pour faire fonctionner ce script JQuery. Cela fonctionne parfaitement lors du redimensionnement de l'image, mais je n'arrive pas à le faire fonctionner sur le chargement initial de la page. Des idées? Je suis complètement coincé et rien ne fonctionne pour moi.JQuery: (window) .resize fonctionne, (document) .ready ne fonctionne pas

<script type="text/javascript"> 
     $(window).resize(function() { 
      if ($(window).width() <= 600) { 
       $('#fcalendar').fullCalendar('changeView', 'basicDay'); 
      } else if ($(window).width() < 748) { 
       $('#fcalendar').fullCalendar('changeView', 'basicDay'); 
      } else { 
       $('#fcalendar').fullCalendar('changeView', 'month'); 
      } 
     }); 

     $(document).ready(function() { 
      if ($(document).width() <= 600) { 
       $('#fcalendar').fullCalendar('changeView', 'basicDay'); 
      } else if ($(window).width() < 748) { 
       $('#fcalendar').fullCalendar('changeView', 'basicDay'); 
      } else { 
       $('#fcalendar').fullCalendar('changeView', 'month'); 
      } 
     }); 
    </script> 
+6

Tout simplement parce que le DOM est prêt, cela ne signifie pas que les images ont été chargées. – Alxandr

+1

Pourquoi écrivez-vous exactement la même fonction deux fois? – techfoobar

+0

@techfoobar: Je suppose pour l'exemple. Il dit que le 1er fonctionne, mais pas le 2ème. –

Répondre

1

Comme indiqué dans les commentaires, document.ready! = Window.onload. Document.ready n'attendra pas le chargement des images. Ainsi, il peut donner de mauvais résultats. Vous devez vous connecter à l'événement window.onload lorsque vous souhaitez attendre que les images soient complètement terminées (c'est également le mécanisme utilisé dans les sites de parallaxe qui doivent attendre le chargement des images).

window.onload = function() { 
     if ($(document).width() <= 600) { 
      $('#fcalendar').fullCalendar('changeView', 'basicDay'); 
     } else if ($(window).width() < 748) { 
      $('#fcalendar').fullCalendar('changeView', 'basicDay'); 
     } else { 
      $('#fcalendar').fullCalendar('changeView', 'month'); 
     } 
}; 
+0

Ah, je comprends parfaitement. Je regarde mes notes parce que je jure que j'ai essayé window.onload en premier. Eh bien, cela fonctionne parfaitement. Ceci est basique javascript, correct, pas JQuery? –

+0

@MichaelStenberg - jQuery est javascript :). Cependant, 'window.onload' fait partie de l'API javascript" vanilla ", donc il ne faudrait pas utiliser de bibliothèques ou de scripts inclus. –

+0

Voilà ce que je veux dire. Merci pour votre exemple et votre explication! –

Questions connexes