2010-09-28 39 views
0

Salut j'ai une méthode qui change l'arrière-plan d'un div toutes les quelques secondes, Comme un carrousel, lorsque l'utilisateur survole un certain texte. sur l'événement # h2Create mouseleave je veux annuler la méthode changingCarosel (arrêter le carrousel de jouer). Comment puis-je faire ceci??annuler méthode jquery sur mouseleave

$(document).ready(function() { 


    $("#h2Create").mouseenter(function() { 
     changingCarosel('create'); 
     $("#h2Create").css("color", "#99eee5"); 
     $("#ServiceDesc").text('WEB/MOBILE/APPS/BESPOKE DESIGN AND BUILD'); 

    }); 
    $("#h2Create").mouseleave(function() { 

     $("#h2Create").css("color", "#fff"); 
    }); 
}); 

changingCaroselvar bgChangeTimer = {}; 
var bgSecondRotation = {}; 
var bgThirdRotation = {}; 
var bgFourthRotation = {}; 
function changingCarosel(param) { 


    switch (param.toString()) 
    { 
    case 'create': 
    $("#ServicesBackgroundImage").css("background-image", "url(/images/spreadVenture.jpg)"); 
     bgChangeTimer = $.timer(2700, function() { 

     $("#ServicesBackgroundImage").css("background-image", "url(/images/Spreadthorntons.jpg)"); 

     bgSecondRotation = $.timer(2700, function() { 

      $("#ServicesBackgroundImage").css("background-image", "url(/images/spreadC2K.jpg)"); 
      bgSecondRotation = $.timer(2700, function() { 
       changingCarosel("create"); 
      }); 
     }); 

    }); 
    break; 
case 'buzz': 
    $("#ServicesBackgroundImage").css("background-image", "url(/images/jr.jpg)"); 
    bgChangeTimer = $.timer(2700, function() { 

     $("#ServicesBackgroundImage").css("background-image", "url(/images/vufold.jpg)"); 

     bgSecondRotation = $.timer(2700, function() { 

      $("#ServicesBackgroundImage").css("background-image", "url(/images/prmothean.jpg)"); 
      bgThirdRotation = $.timer(2700, function() { 
       $("#ServicesBackgroundImage").css("background-image", "url(/images/dayParade.jpg)"); 
       bgFourthRotation = $.timer(2700, function() { 
        changingCarosel("buzz"); 
       }); 
      }); 
     }); 

    }); 
    break; 
default: 
    $("#ServicesBackgroundImage").css("background-image", "url(/images/ifIruledTheWorld.jpg)"); 
    bgChangeTimer = $.timer(2700, function() { 

     $("#ServicesBackgroundImage").css("background-image", "url(/images/Spreadthorntons.jpg)"); 

     bgSecondRotation = $.timer(2700, function() { 

      $("#ServicesBackgroundImage").css("background-image", "url(/images/spreadC2K.jpg)"); 
      bgSecondRotation = $.timer(2700, function() { 
       changingCarosel("spread"); 
      }); 
     }); 

    }); 
    break; 
    } 
} 
+0

ma question a été brisée ici par les commutateurs que j'ai. ils sont utilisés pour déterminer quel texte est survolé par l'utilisateur. –

Répondre

0

Je ne reconnais pas la fonction $ .timer(). Est-ce un plugin? Je ne trouve aucune documentation. Si elle renvoie une minuterie JavaScript, créée avec setInterval ou setTimeout, vous pouvez l'annuler avec clearInterval (bgChangeTimer); ou clearTimeout (bgChangeTimer); respectivement.

Vérifiez la documentation du plugin que vous utilisez.

Sinon, vous pouvez essayer le plugin Cycle. Il le fait très facilement et avec souplesse: http://jquery.malsup.com/cycle/

+0

oui c'est un plugin jquery timer: http://www.evanbyrne.com/article/jquery-timer-plugin oublié de metion ça. Je vais essayer de régler les intervalles au lieu de l'utiliser. –

+0

le plugin timer que j'utilise est créé avec setTimeout. donc j'ai essayé ceci dans ma méthode de mouseleave: clearTimeout (bgChangeTimer); clearTimeout (bgSecondRotation); clearTimeout (bgThirdRotation); clearTimeout (bgFourthRotation); mais pas de chance :-(cycle sera mieux pour cette situation? –

+0

"cycle sera mieux pour cette situation?" Eh bien, cela * fonctionne *, et est facile à mettre en place. – geon