$(document).ready(function() {
var x = "";
$("#anyElement").click(function() {
x = "test";
alert(x);
});
alert(x);
});
当第一个警报工作时,消息框显示"测试"。当第二个警报工作时,消息框显示" "。
$("#anyElement").click(function() {
// How can i set the x veriable as "test" here
});
我不确定我是否理解你的要求,但是嘿,让我们避免全局,好吗?
也就是说,我建议您尝试这样的方法:
var app = {};
app.x = 'initial value';
app.bindEvents = function() {
$('#anyElement').click(function() {
app.x = 'test';
console.log(app.x);
});
};
app.bindEvents = function() {
app.bind();
};
$(app.init);
在这里,我们的代码只设置了一个全局对象(app
(,避免污染命名空间。代码中的问题是您尝试设置"全局",但x
不是全局变量,而只是一个局部变量。
在此处查看工作 JSFiddle
您遇到的问题是由于程序的流程。变量 x 的声明使 x 成为全局变量,范围限定为 document.ready 函数。
'test' 直到 Click 事件之后才分配给 x 变量,第一个警报实际上是代码中编写的第二个警报,因为没有与警报关联的事件。
代码按预期工作,第一个警报为空,因为尚未调用点击触发器:
小提琴
$(document).ready(function() {
var x = "";
$("#anyElement").click(function() {
x = "test";
alert(x);
});
alert(x);
});