2012-03-31 2 views
0

Wie kann ich eine Variable außerhalb einer click() in jQuery verwenden? Ich habe den folgenden Code -Verwendung der Variable in click() zugewiesen

$(".area").not(".enemy").click(function(){ 
       $(".area").removeClass("clicked"); 
       $(this).toggleClass("clicked"); 
       attackValue = $(this).text();   
     }); 

Als ich attackValue außerhalb des click() verwenden möchten Es wird nicht definiert werden.

Antwort

2

Um attackValue zu halten außerhalb des Geltungsbereichs der Funktion definiert, müssen Sie es außerhalb Ihrer Click-Ereignis erklären.

var attackValue; 

$(".area").not(".enemy").click(function(){ ... }); 

Jetzt sollten Sie in der Lage sein, es draußen zu referenzieren.

+0

Wenn OP den 'attackValue' ohne das Schlüsselwort' var' deklariert. Es ist global und sollte außerhalb der Funktion zugänglich sein. Obwohl es unmöglich ist, das Code-Snippet zu verwenden. – PeeHaa

0

Für den Anfang: Das ist nicht, wie Sie eine Variable in Javascript erklären sollte:

attackValue = $(this).text(); 

Dies würde 'Programme' variable Raum Krempel. Sie sollten immer eine Variable in JavaScript mit dem Schlüsselwort var deklarieren.

Wenn ich attackValue außerhalb des Klicks() verwenden möchte, wird es nicht definiert.

Es hängt davon ab, wo und wann Sie es verwenden möchten. Betrachten Sie die following code:

var attackValue = 'some value'; 

function setValue() { 
    attackvalue = 'some other value'; 
} 

console.log(attackvalue); // this would output some value, because the function hasn;t run yet 
setValue(); 

Allerdings, wenn Sie would do:

var attackValue = 'some value'; 

function setValue() { 
    attackValue = 'some other value'; 
} 

setValue(); 

console.log(attackValue); // this would output some other value, because the function did already run 

Beachten Sie, dass der obige Code in einem closure ausgeführt werden soll. Oder es würde immer noch den Variablenraum durcheinander bringen (selbst wenn das Schlüsselwort var verwendet wird). So würde es aussehen wie:

(function() { // yay closure, now all variables defined in here will stay in here 
    var attackValue = 'some value'; 

    function setValue() { 
     attackValue = 'some other value'; 
    } 

    setValue();  

    console.log(attackValue); // this would output some other value, because the function did already run 
})();