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



我已经更新了我的问题,因为我认为我有解决原始问题的方法。我想将$margins转换为全局变量,可用于计算另一个函数的$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://lastnighti.co.uk/我希望用户主要使用箭头键使用 serialscroll 插件浏览网站。我遇到的问题是,如果用户通过按向下箭头突出显示图像,然后继续按向右箭头键继续下一个图像,则由于串行滚动考虑了边距宽度,它就会被超越。

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

使用 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),  

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

也许这对你来说没问题:

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),  

最新更新