如何在点击事件中设置全局变量

How to set the global variable in click event?

本文关键字:设置 全局变量 事件      更新时间:2023-09-26
$(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);
});