2010-09-13 34 views
2

J'ai une fonction qui redimensionne l'arrière-plan de l'image lorsque la page est chargée,jquery: délie fonction chargée

$(document).ready(function(){ 
loadBackground(); 
}); 

et je veux « enlever » « décharge » ou cette fonction chargée lorsque je clique sur un bouton pour que je puisse charger cette fonction à nouveau au lieu de le charger au-dessus de la page,

$('.get-image').click(function(){ 
     $(window).unbind("resize",loadBackground); 
     loadBackground(); 
return false; 
}); 

mais je ne peux pas le faire fonctionner! des idées s'il vous plaît?

merci, Lau

+0

Que voulez-vous par « charge cette fonction nouveau » Load où Comment – Pointy

+0

Il est difficile de deviner la bonne '.unbind (« redimensionner »)' ligne sans pouvoir voir?? votre ligne '.bind()' ou '.resize()'. :-) –

Répondre

0

Sur la base de vos commentaires, je ne pense pas que vous avez besoin de délier tout:

Vous voulez d'abord charger l'arrière-plan lorsque la page est chargée, et vous voulez charger l'arrière-plan lorsqu'un clic se produit.

Que devient l'arrière-plan lorsque l'image est redimensionnée devrait être une autre fonction distincte qui est lié à $(window).resize() ... donc tout cela va ressembler à ceci:

($(function() { ... }); signifie la même chose que $(document).ready(function() { ... }) il est juste plus rapide écrire:

$(function() { 
     // Define load BG 
    function loadBackground() { 
     /// ... 
    } 

     // Define what happens to the BG image on resize 
     // this doesn't have to change. It should refer 
     // to the generic `background-image` 
    $(window).resize(function() { 
     // ... 
    }); 

     // load BG when page is ready: 
    loadBackground(); 

     // load another BG if there's a click: 
     // This will effectively cancel the previous load bg 
    $('.get-image').click(function() { 
     loadBackground(); 
     return false; 
    });  
}); 

// I'm assuming you're somehow changing which BG image is loaded 
// something like loadBackground(image)... and you could initially 
// load a default image, and then, if there's a click, you could 
// determine what image should be based on what was clicked. 
+0

merci. Je l'ai juste essayé mais ça marche toujours ... l'image ne sera plus redimensionnée avec cette $ (fenêtre) .resize (loadBackground); la fonction loadBackground doit être dans $ (document) .ready (function() {loadBackground();}); – laukok

+1

@lauthiamkok - C'est parce que vous devez créer une référence à votre fonction, comme ceci: 'var loadBackground = function() {...}' ... jetez un oeil à la façon dont le code apparaît dans [jsFiddle] (http : //jsfiddle.net/xTfCX/) –

+0

@lauthimakok - Et tout le code dans ma réponse est dans '$ (document) .ready (function() {...});' –