Использование переменной, назначенной в click () - PullRequest
0 голосов
/ 31 марта 2012

Как я могу использовать переменную вне click() в jQuery? У меня есть следующий код -

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

Когда я хочу использовать attackValue за пределами click(), оно не будет определено.

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Для того, чтобы attackValue было определено вне области действия функции, вам необходимо объявить его вне события click.

var attackValue;

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

Теперь вы можете ссылаться на него снаружи.

0 голосов
/ 31 марта 2012

Для начала: это НЕ то, как вы должны объявлять переменную в javascript:

attackValue = $(this).text();

Это загромождает пространство переменных для программ.Вы должны 'всегда' объявлять переменную в javascript с помощью ключевого слова var.

Когда я хочу использовать attackValue вне click (), оно не будет определено.

Это зависит от того, где и когда вы хотите его использовать.Рассмотрим следующий код :

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();

Однако, если вы сделаете :

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

Обратите внимание, что приведенный выше код должен выполняться в закрытие .Или это все еще загромождает пространство переменных (даже при использовании ключевого слова var).Так это будет выглядеть примерно так:

(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
})();

...