Fonction de déclenchement jQuery supérieure à une certaine largeur de fenêtre

JQuery que j’essaie d’écrire me pose beaucoup de problèmes. J’ai besoin qu’une fonction soit disponible à tout moment et une autre lorsque la fenêtre des utilisateurs est supérieure à une largeur définie. Voici mes fonctions, toutes deux exécutées dans jQuery(document).ready(function($){

Fonction pour les menus déroulants, ne devrait se produire que lorsque la fenêtre est plus grande que la quantité définie;

 //the dropdown code for desktop users function largeDropDown(){ $('#nav ul li').hover( //open function(){ $(this).find('ul').stop().slideDown(300); }, //close function(){ $(this).find('ul').stop().slideUp(300); } ); } 

Et celui-ci est disponible tout le temps, même s’il serait bien de savoir comment le rendre également dépendant de la taille de l’écran.

 //the dropdown code for smaller screens $('a.menu_sortinggger').click(openMenu); function openMenu(e){ e.preventDefault(); if($(this).next('ul').hasClass('open_menu')){ $(this).next('ul').slideUp(300).removeClass('open_menu'); $(this).html("↓"); } else { $(this).next('ul').slideDown(300).addClass('open_menu'); $(this).html("↑"); } } 

À l’aide des requêtes de média CSS, le a.menu_sortinggger est masqué lorsque la fenêtre dépasse 768 pixels. De cette façon, jQuery ne fera rien (du moins c’est ma tentative de faire en sorte que cela fonctionne!)

Je voudrais donc savoir comment faire fonctionner la première fonction au-dessus de 768 pixels, et comment appeler cette fonctionnalité sur une fenêtre redimensionnée. Toute aide est la bienvenue! Merci.

Vous pouvez lier des événements de redimensionnement de fenêtre en faisant:

 $(window).on('resize', function(event){ // Do stuff here }); 

Vous pouvez obtenir la taille de la fenêtre en faisant:

 var windowWidth = $(window).width(); if(windowWidth > 768){ // Do stuff here } 

Voici un jsfiddle pour tout voir en action .

Faites attention à ce que vous liez dans votre fenêtre pour redimensionner les événements. Il peut arriver à être exécuté des dizaines de fois lorsqu’un utilisateur redimensionne naturellement le navigateur. Un code lourd entraînera une mauvaise expérience utilisateur.

Cela vérifiera la taille de la fenêtre chaque fois que vous exécuterez la fonction. Si la fenêtre est inférieure à 768px, il ouvrira le menu. S’il est plus grand que 768px, il ne fera rien (allez Tigger!).

 function openMenu(e){ if ( $(window).width() < 768 ) { e.preventDefault(); if($(this).next('ul').hasClass('open_menu')){ $(this).next('ul').slideUp(300).removeClass('open_menu'); $(this).html("↓"); } else { $(this).next('ul').slideDown(300).addClass('open_menu'); $(this).html("↑"); } } else { return false; } } 

EDIT: je voulais append une micro-bibliothèque que j'utilisais pour exécuter du code avec des largeurs de fenêtres spécifiques. il vous donne la possibilité de tirer parti des requêtes multimédia en JavaScript. Je recommanderais de vérifier enquire.js .