使用click()中指定的变量

时间:2012-03-31 00:02:42

标签: jquery click

如何在click()中的jQuery之外使用变量?我有以下代码 -

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

当我想在click()之外使用attackValue时,它将无法定义。

2 个答案:

答案 0 :(得分:2)

为了将attackValue定义在函数范围之外,您需要在click事件之外声明它。

var attackValue;

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

现在你应该可以在外面引用它了。

答案 1 :(得分:0)

对于初学者:这不是你应该如何在javascript中声明变量:

attackValue = $(this).text();

这会使“程序”变量空间混乱。您应该“始终”使用var关键字在javascript中声明变量。

  

当我想在click()之外使用attackValue时,它将不会被定义。

取决于您希望何时何地使用它。考虑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();

但是如果你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

请注意,上述代码应在closure中运行。或者它仍然会使变量空间混乱(即使使用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
})();