如何在click()
中的jQuery
之外使用变量?我有以下代码 -
$(".area").not(".enemy").click(function(){
$(".area").removeClass("clicked");
$(this).toggleClass("clicked");
attackValue = $(this).text();
});
当我想在click()
之外使用attackValue时,它将无法定义。
答案 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
})();