Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法访问jQuery事件处理程序中的全局变量_Javascript_Jquery_Global Variables - Fatal编程技术网

Javascript 无法访问jQuery事件处理程序中的全局变量

Javascript 无法访问jQuery事件处理程序中的全局变量,javascript,jquery,global-variables,Javascript,Jquery,Global Variables,我使用下面的代码来跟踪滚动,我希望将所选元素变量放在事件处理程序之外,这样用户每次滚动时就不会调用它们,从而节省资源。仅当我将前两个变量放入事件处理程序中时,以下操作才有效: var recommend_con_list=$(".recommend_con_list") var recommend_con=$('.recommend_con') $(window).scroll(function () { var y=$(window).scrollTo

我使用下面的代码来跟踪滚动,我希望将所选元素变量放在事件处理程序之外,这样用户每次滚动时就不会调用它们,从而节省资源。仅当我将前两个变量放入事件处理程序中时,以下操作才有效:

    var recommend_con_list=$(".recommend_con_list")
    var recommend_con=$('.recommend_con')
    $(window).scroll(function () {

        var y=$(window).scrollTop()
        if(y > 82){
            recommend_con.css({position:"fixed",top:"0"})
        }else{
            recommend_con.css({position:"",top:""})
        }
    });

如果您想进一步优化,我将使用以下方法:

$(document).ready(function () {
    var recommend_con_list = $(".recommend_con_list").get(),
        recommend_con = $('.recommend_con').get(),
        $window = $(window);

    $window.scroll(function () {
        var y = $window.scrollTop();
        if (y > 82) {
            for (var i = 0, j = recommend_con.length; i < j; i++) {
                recommend_con[i].classList.add("special");
            }
        } else {
            for (var i = 0, j = recommend_con.length; i < j; i++) {
                recommend_con[i].classList.remove("special");
            }
        }
    });
});
$(文档).ready(函数(){
var recommend_con_list=$(“.recommend_con_list”).get(),
recommend_-con=$('.recommend_-con').get(),
$window=$(window);
$window.scroll(函数(){
变量y=$window.scrollTop();
如果(y>82){
对于(变量i=0,j=con.length;i
使用此CSS:

<style type="text/css">
    .special {
        position: fixed;
        top: 0;
    }
</style>

.特别的{
位置:固定;
排名:0;
}

如果您想进一步优化,我将使用以下方法:

$(document).ready(function () {
    var recommend_con_list = $(".recommend_con_list").get(),
        recommend_con = $('.recommend_con').get(),
        $window = $(window);

    $window.scroll(function () {
        var y = $window.scrollTop();
        if (y > 82) {
            for (var i = 0, j = recommend_con.length; i < j; i++) {
                recommend_con[i].classList.add("special");
            }
        } else {
            for (var i = 0, j = recommend_con.length; i < j; i++) {
                recommend_con[i].classList.remove("special");
            }
        }
    });
});
$(文档).ready(函数(){
var recommend_con_list=$(“.recommend_con_list”).get(),
recommend_-con=$('.recommend_-con').get(),
$window=$(window);
$window.scroll(函数(){
变量y=$window.scrollTop();
如果(y>82){
对于(变量i=0,j=con.length;i
使用此CSS:

<style type="text/css">
    .special {
        position: fixed;
        top: 0;
    }
</style>

.特别的{
位置:固定;
排名:0;
}

此代码是否在
文档中执行
就绪
处理程序?或者在
.recomment\u con\u列表
.recommment\u con
元素可用/呈现之后?否则,选择器将无法工作,因为找不到元素,并且变量将不包含任何元素,因为它们不在
documnet``ready
处理程序中。我现在就用
ready
试试。谢谢,它现在可以用了。虽然没有太大区别。它仍然消耗高达20%的CPU。显示您的实际代码。在某些情况下,您无法再优化它(除非您想停止使用jQuery对象/方法),这可能不是一个坏主意。此代码是否在
文档
就绪
处理程序中执行?或者在
.recomment\u con\u列表
.recommment\u con
元素可用/呈现之后?否则,选择器将无法工作,因为找不到元素,并且变量将不包含任何元素,因为它们不在
documnet``ready
处理程序中。我现在就用
ready
试试。谢谢,它现在可以用了。虽然没有太大区别。它仍然消耗高达20%的CPU。显示您的实际代码。在某种程度上,你不能再优化它(除非你想停止使用jQuery对象/方法),这可能不是一个坏主意。我试图让一个垂直列表比页面元素的其余部分滚动得慢,比如
recommendant\u con\u list.parent().css({marginTop:(82-y)/3+“px”})
它被放置在
recommendant\u con
中,它将被固定在适当的位置,并且有隐藏的溢出。我的问题已经得到了回答,但我会接受您的回答,因为您使用了
$(窗口)
变量,我认为这很有帮助。另一件事,最新的Firefox有一个非常平滑的滚动,与chrome不同的是,通过这个代码CPU消耗显著增加。我试图让一个垂直列表比页面元素的其余部分滚动得慢,比如
recommendant\u con\u list.parent().css({marginTop:(82-y)/3+“px”})
它被放置在
recommendant\u con
中,它将被固定在适当的位置,并且有隐藏的溢出。我的问题已经得到了回答,但我会接受您的回答,因为您使用了
$(窗口)
变量,我认为这很有帮助。另一件事,最新的Firefox有一个非常平滑的滚动,与chrome不同,使用这段代码CPU消耗显著增加。