按键和鼠标单击后,将函数变量转换为全局变量

时间:2012-04-22 01:38:39

标签: javascript jquery javascript-events global-variables serialscroll

我已经更新了我的问题,因为我认为我有解决原始问题的方法。我想将$ margin转换为一个全局变量,我可以用它来计算另一个函数的$ offset。我需要在(箭头)按键,鼠标点击和可能的鼠标滚轮操作后更新变量。有一个简单的解决方案吗?

这是我的代码:

$(document).keydown(function(e){  //keyboard bind   
    if( e.keyCode == 39 ){//right (->)
        if($('.selectstyle').hasClass("selectstyle")){
            $margins = -180;
        } else ($(".select" ).hasClass("select")){
            $margins = 0;
        }
    }
});
$offset = (-220 + $margins),            

我提出的代码可能不适合我的解决方案。我正在处理的网站是http://tinyurl.com/cqwxw6e我希望用户使用serialscroll插件主要使用箭头键导航网站。我遇到的问题是,如果用户通过按向下箭头突出显示图像,然后按向右箭头键继续下一个图像,则由于连续滚动将边距宽度计入帐户而超出。

这让我悲伤了一个多星期。我尝试过排队和setTimout函数,但它们破坏了UI的流畅性。基本上我上面的问题是更改$ offset变量以考虑何时使用.selectstyle类突出显示图像。我很感激上述问题的任何解决方案来动态控制$offset

1 个答案:

答案 0 :(得分:0)

使用window

制作全局变量
window.varName = "foo";

所以你想要这个:

$(document).keydown(function(e){  //keyboard bind   
    if( e.keyCode == 39 ){//right (->)
        if($('.selectstyle').hasClass("selectstyle")){
            window.$margins = -180;
        } else ($(".select" ).hasClass("select")){
            window.$margins = 0;
        }
    }
});
$offset = (-220 + $margins),  

请注意,可能有更好的方法来做你想要的。

也许这是o.k.由你:

var $margins;

$(document).keydown(function(e){  //keyboard bind   
    if( e.keyCode == 39 ){//right (->)
        if($('.selectstyle').hasClass("selectstyle")){
            $margins = -180;
        } else ($(".select" ).hasClass("select")){
            var $margins = 0;
        }
    }
});

$offset = (-220 + $margins),