J'essaye d'exécuter cette fonction mais elle n'atteint pas la première sinon si lorsque j'atteins la taille d'écran spécifiée, elle continuera à utiliser la première if.
$(window).resize(function() {
function removeClass() {
$('#cookbook_add').removeClass('st-remove-label');
$('#email_page').removeClass('st-remove-label');
}
function addClass() {
$('#cookbook_add').addClass('st-remove-label');
$('#email_page').addClass('st-remove-label');
}
function addRemoveLabel() {
lastWidth = $(window).width();
if (lastWidth < 1150) {
console.log('1150');
addClass();
} else if (lastWidth < 975) {
console.log('975');
removeClass();
} else if (lastWidth < 680) {
console.log('680');
addClass();
} else {
removeClass();
}
}
addRemoveLabel();
});
J'attends la console se connecte pour se déclencher lorsque l'écran est de cette taille, mais ce n'est pas le cas.
3 Réponses :
Vous devez spécifier une plage supérieure et inférieure à pour chacune des instructions if
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
$(window).resize(function() {
function removeClass() {
$('#cookbook_add').removeClass('st-remove-label');
$('#email_page').removeClass('st-remove-label');
}
function addClass() {
$('#cookbook_add').addClass('st-remove-label');
$('#email_page').addClass('st-remove-label');
}
function addRemoveLabel() {
lastWidth = $(window).width();
if (lastWidth < 1150 && lastWidth > 975) {
console.log('1150');
addClass();
} else if (lastWidth < 975 && lastWidth > 680) {
console.log('975');
removeClass();
} else if (lastWidth < 680) {
console.log('680');
addClass();
} else {
removeClass();
}
}
addRemoveLabel();
});
JSFiddle: https://jsfiddle.net/on0pet6g/
C'est parfait. Merci de m'avoir montré comment procéder.
@MaxLoyd heureux de vous aider :-)
Remplacez la fonction par
function addRemoveLabel() {
lastWidth = $(window).width();
if (lastWidth <= 1150 && lastWidth > 975) {
console.log('1150');
addClass();
} else if (lastWidth <= 975 &&lastWidth > 680) {
console.log('975');
removeClass();
} else if (lastWidth <= 680) {
console.log('680');
addClass();
} else {
removeClass();
}
}
Le problème est que le premier if sera atteint avec n'importe quel nombre La meilleure façon est de comparer d'abord les valeurs les plus basses comme ça:
if (lastWidth < 680) {
console.log('680');
addClass();
}
else if (lastWidth < 975) {
console.log('975');
removeClass();
}
else if (lastWidth < 1150) {
console.log('1150');
addClass();
}
else {
removeClass();
}
Il vous suffit de changer la commande.
remarque: vous pouvez probablement le faire avec une règle CSS @media ciblant ces largeurs.
Votre premier
ifest valide pour toutes les largeurs inférieures à 1150 donc l'exécution s'arrêtera toujours là.@Shilly J'ai essayé ça, mais ça n'a pas fonctionné.
Vous pouvez combiner les sélecteurs
$ ('# cookbook_add, #email_page'). RemoveClass ('st-remove-label')... ou utiliser une classe.