0

所以我对 javascript 和 jquery 还是有点陌生​​,所以我仍然坚持这个小问题。这里的问题是“currentId”变量。此变量在滚动事件期间获取一个值,但即使在滚动事件通过并在下一个滚动事件期间考虑在内,我也需要它保持不变,它只是返回 null 或未定义。

有人可以在这里指出我正确的方向吗?因为我已经读了一天了哈哈哈。

$("#content").on("scroll resize", function(){    //on scroll

    var pos=$("#frontpage").offset();    //take front page position in variable

    $('.page').each(function(){    //for each div with a class of page

        if(pos.top >= $(this).offset().top && pos.top < $(this).next().offset().top){    //if this divs position is in the correct range

            if (currentId != $(this).attr('id')|| typeof currentId == 'undefined') {    //if currentId Var is diffrent from this divs id or is undefined

                var currentId = $(this).attr('id');    //set currentId Var to this divs id

                $(this).addClass( "foo" );    //add class foo to this div

            }else{
                            //Else do nothing
            };    //endIfElse

        }else{
            $(this).removeClass( "foo" );     //Else remove the foo class from this div
        };                                     //endIfElse

    });                                //end each

});
4

2 回答 2

1

为什么不简单var currentId地从任何函数或处理程序中取出?只要页面显示,它就不会消失。

现在要使其真正持久化,您可以在 cookie 中存储和读取(使用document.cookie)。

于 2013-07-13T20:00:33.193 回答
1

这段代码一般来说不是很好,但要解决您的特定问题,请将变量声明放在代码块之外:

var currentId;
$("#content").on("scroll resize", function() { //on scroll
    var pos = $("#frontpage").offset(); //take front page position in variable
    $('.page').each(function($currentId) { //for each div with a class of page
        if (pos.top >= $(this).offset().top && pos.top < $(this).next().offset().top) { //if this divs position is in the correct range
            if (currentId != $(this).attr('id') || typeof currentId == 'undefined') { //if currentId Var is diffrent from this divs id or is undefined
                currentId = $(this).attr('id'); //set currentId Var to this divs id
                $(this).addClass("foo"); //add class foo to this div
            } else {
                //Else do nothing
            }; //endIfElse
        } else {
            $(this).removeClass("foo"); //Else remove the foo class from this div
        }; //endIfElse
    }); //end each
});
于 2013-07-13T20:01:49.120 回答