全局变量Jquery

时间:2012-08-14 02:03:28

标签: jquery

我以前曾问过这个问题,但实际上从未真正开始工作。

或多或少,我有多个JS文件,我需要检查一个变量。我有一个函数,它检查一个类是否存在,然后更改变量。

var states = function(){

    if($('#Animation.switch.switchOff').length == 1){
        animationtoggle = 0;
    }
    else {
        animationToggle = 1 ;
    }
    if($('#Autoscroll.switch.switchOff').length == 1){
        scrolltoggle = 1;   
    }
    else {
        scrolltoggle = 0    
    }
    return {
        animationtoggle: animationtoggle,
        scrolltoggle: scrolltoggle
    };
}

然后我在另一个函数里面,在另一个JS文件中:

Okay, I've done this, although It still doesn't fix my problem of being able to use this variable on another file, I have this inside the function: 

$(function() {
    var ss = states();
    ss.animationtoggle;
    var last_position = 0;
    var duration = 300;
    if (animationtoggle == 1){
       //only do something if it's equal to 1 "on"
});

这是切换按钮代码:

$('#optionMenu ul li').click(       
function() {
$(this).toggleClass('switchOff');
var ss = states();
ss.scrolltoggle;
ss.animationtoggle; 
});

我是以正确的方式接近这个吗?

请帮忙!这是我的网站,此时切换位于右上角:http://shannonhochkins.v5.cloudsvr.com.au/

3 个答案:

答案 0 :(得分:1)

我相信你会通过多次创建和分配相同的变量来覆盖它们。全局变量应该在特定函数的范围之外定义一次,最好接近页面加载的第一个操作。全局变量被分配给窗口对象,并且一旦声明就可以通过名称访问。

//You need to define your global variable out of the scope of your function
var ss = states();

$(function() {
if (ss.animationtoggle == 1){
   //only do something if it's equal to 1 "on"
});

$('#optionMenu ul li').click(       
function() {
$(this).toggleClass('switchOff');
//Don't create the same variable here with the same name
//Instead access the global variables by using them
// ss.scrolltoggle;
// ss.animationtoggle; 
});

答案 1 :(得分:0)

尝试更改

var animationtoggle = 1,

animationtoggle = 1, 

并将它们移出功能。如果不是,他们将一次又一次地初始化

答案 2 :(得分:0)

尝试重命名函数中的变量以避免混淆:

var animationtoggle = 1;
...

var _animationtoggle = 1;
...
return { animationtoggle : _animationtoggle, ....}

或代替您的功能如下:

return {
        animationtoggle: ($('#Animation.switch.switchOff').length == 1)?0:1,
        scrolltoggle: ($('#Autoscroll.switch.switchOff').length == 1)?1:0
};