2010-11-28 3 views
0

Cela devrait être une question facile pour beaucoup d'entre vous!Besoin d'aide pour passer des variables entre deux fonctions dans jQuery

Contexte: J'ai de la difficulté à passer une variable entre deux fonctions en javascript en utilisant la bibliothèque jQuery. Ci-dessous un script sur lequel je travaille qui charge dynamiquement le contenu basé sur l'index de workSnippet. La fonction supérieure fonctionne. La deuxième fonction ne fonctionne pas. Aucune alerte n'est donnée, car la variable portfolioCount ne semble pas exister. Comment puis-je transmettre la variable entre les deux fonctions de sorte que lorsque je clique sur 'suivant', je peux alerter portfolioCount?

Merci

// set global variable 
var portfolioCount = 0; 

// begin on document ready 
     $(document).ready(function() { 
// Return the value of the index of workSnippet when clicked and load related content 

$(".workSnippet").click(function() { 

    //set variable portfolioCount based on index 

    var portfolioCount = $(".workSnippet").index(this); 

    //load content based on portfolioCount 

    $('#work #cycle' + portfolioCount).load("ajax-content/ajax-content.php #portfolioImage" + portfolioCount); 

    // when loaded, run animation functions 

    $("#work").ajaxComplete(function(){ 

     setTimeout(invokeMultipleCycle, 200); 

     showWork(); 
     $('#work').cycle(portfolioCount); 
     $('#blurbs').cycle(portfolioCount); 

     return portfolioCount; 
    }); 

}); 

// return cycle value when 'next' is clicked 

$('#next').click(function() { 

    alert(portfolioCount); 
}); 

}); 
+0

Si vous 'alerte (portfolioCount) 'juste après l'avoir assigné dans le gestionnaire de clic, quel numéro est alerté? Votre problème peut se situer là, et non dans votre portée variable. – strager

+0

(De plus, ici, votre variable globale n'est jamais référencée. Êtes-vous sûr de comprendre les règles de fermeture JavaScript?) – strager

+0

Nevermind; J'ai mal lu le code. Je n'ai pas remarqué que le code défile pour révéler le rappel '$ ('# next'). Click'. – strager

Répondre

2

Déclare le global ainsi, en dehors des fonctions:

var portfolioCount=0; 

Retirez ensuite le mot-clé 'var' de cette ligne:

var portfolioCount = $(".workSnippet").index(this); 

/sim

+0

C'était le problème, je n'ai jamais su ceci! Merci. – CarbonDry

0

Declare portfolioCount en tant que variable globale.
Vous pouvez également

$('#next').click(function() { 
     var item = $(".workSnippet"); 
     var portfolioCount=$(".workSnippet").index(item); 
     alert(portfolioCount); 
    }); 
+0

J'ai essayé de déclarer portfolioCount comme global en tapant var portfolioCount = 0; en haut du script avant toutes les fonctions mais il donnera toujours '0' dans l'alerte (quand on clique sur le suivant). J'ai essayé votre alternative mais cela ne fonctionne pas car l'index attrape le clic, pas l'élément. – CarbonDry

0

vous pouvez l'enregistrer dans un javascript variable globale

0

vous déclarez portfolioCount deux fois. le portfolioCount à l'intérieur du $ ('. worksnippet'). click() callback est une variable entièrement différente à l'intérieur de la portée du callback. essayez de retirer le mot clé 'var' de l'assignation de callback de portfolioCount et il faut utiliser celui global.

+0

Ceci l'a réparé, merci – CarbonDry

Questions connexes