如何在click事件中设置全局变量?

时间:2014-10-27 19:51:41

标签: javascript jquery global-variables jquery-click-event

$(document).ready(function() {

    var x = "";

    $("#anyElement").click(function() {
        x = "test";
        alert(x);
    });

    alert(x);
});

当第一个警报有效时,消息框显示“test”。当第二个警报工作时,消息框显示“”。

$("#anyElement").click(function() {
    // How can i set the x veriable as "test" here
});

3 个答案:

答案 0 :(得分:1)

我不确定我是否明白你要求的是什么,但是,嘿,让我们避免全局,我们呢?

那就是说,我建议你试试这样的方法:

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),避免污染命名空间。 你的代码中的问题是你试图设置一个" global"但是x不是全局变量,而只是一个局部变量。

查看有效的JSFiddle here

答案 1 :(得分:0)

您的代码按预期工作,第一个警报为空,因为尚未调用单击触发器:

FIDDLE

$(document).ready(function() {

    var x = "";

    $("#anyElement").click(function() {
        x = "test";
        alert(x);
    });

    alert(x);
});

答案 2 :(得分:0)

您遇到的问题是由于程序的流程。您对变量x的声明使x全局并且作用于document.ready函数。

'测试'直到click事件之后才分配给x变量,并且第一个警报实际上是代码中写入的第二个警报,因为没有与警报关联的事件。