web-dev-qa-db-fra.com

Suppression de l'événement $ (window) .resize dans jQuery

Une partie de la page que je développe nécessite qu'un événement $ (window) .resize soit ajouté à une div lorsqu'un utilisateur clique sur un bouton, afin de basculer entre le redimensionner avec la fenêtre et le laisser fixe à sa taille d'origine:

function startResize() {
    $(window).resize(function() {
        $("#content").width(newWidth);
        $("#content").height(newHeight);
    });
}

Ce que je ne peux pas savoir, c'est comment "désactiver" cet événement lorsque le bouton est cliqué à nouveau, afin que le contenu cesse de se redimensionner.

function endResize() {
    // Code to end $(window).resize function
    $("#content").width(originalWidth);
    $("#content").height(originalHeight);
}

Toute l'aide pouvant etre apportée serait très appréciée.

39
BiscuitBaker
function endResize() {
    $(window).off("resize");
    $("#content").width(originalWidth);
    $("#content").height(originalHeight);
}

Notez que cela est extrêmement intrusif et peut casser un autre code.

C'est la meilleure façon:

function resizer() {
    $("#content").width(newWidth);
    $("#content").height(newHeight);
}

function startResize() {
    $(window).resize(resizer);
}

function endResize() {
    $(window).off("resize", resizer);
}
87
Esailija
function startResize() {
   $(window).on("resize.mymethod",(function() {
     $("#content").width(newWidth);
     $("#content").height(newHeight);
   }));
}

function endResize() {
   $(window).off("resize.mymethod");
}

l'utilisation d'un espace de noms sur la méthode de requête permettra de désactiver l'événement de redimensionnement uniquement pour votre méthode.

55
arin