Javascript 小Jquery问题

Javascript 小Jquery问题,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个JQUERY脚本正在运行 脚本将3个左侧div设置为sticky,即当用户滚动div之后。 我一直在尝试让jquery在名为wholewrap的div上查找高度(顾名思义,wholewrap是整个站点的包装器)。 一旦我得到了这个值,我想看看它是否比某个值小(目前我正在尝试1500px-反复试验,看看哪一个有效)。 如果整个RAP的高度小于我预定的大小,那么我希望setting2变量反映一个大小,否则反映另一个大小 这是我的密码。我想做的就是将setting2的高度设置为div whol

我有一个JQUERY脚本正在运行

脚本将3个左侧div设置为sticky,即当用户滚动div之后。 我一直在尝试让jquery在名为wholewrap的div上查找高度(顾名思义,wholewrap是整个站点的包装器)。 一旦我得到了这个值,我想看看它是否比某个值小(目前我正在尝试1500px-反复试验,看看哪一个有效)。 如果整个RAP的高度小于我预定的大小,那么我希望setting2变量反映一个大小,否则反映另一个大小

这是我的密码。我想做的就是将setting2的高度设置为div wholewrap的高度(以阻止www.blisshair.com.au上的溢出问题)。我已经添加了整个JS文件,因为我不确定哪里出了问题:

function StickyScroller(obj, options)
{        
//Store function scope
var $this = this;

//Store initial top and left/right values
var top = $(obj).css('top');
var left = $(obj).css('left');
var right = $(obj).css('right');

var scroll = 0;
var tempScroll = 0;

//------------------------------------------------------------
// Set default property values
//------------------------------------------------------------
var defaults = {
start: 0,
end: 1000,
interval: 400,
margin: parseInt(top, 10),
range: 400
},  settings = jQuery.extend(defaults,options);
obj = $(obj);

settings.index = 0;
settings.oldIndex = 0;

//Accessors for settings
GetSet.getters({scope: $this, obj: settings});

//------------------------------------------------------------//
//                      Callback Functions                    //
//------------------------------------------------------------//
var Callback = {};

Callback.newIndex = function(){};  //When the index changes
Callback.limbo = function(){};     //When scroller not in range
Callback.scroll = function(){};    //On window scroll

//Get setters for Callback functions
GetSet.setters({scope: this, prefix: "on", obj: Callback});   

//=========================================================//
//Public distanceFrom
//Purpose: Determines the distance in pixels between
//         the scroller and an index
//Parameters:
//  index: The index whose distance from scroller will be calculated
//Postcondition: Returns an integer
//=========================================================//
this.distanceFrom = function(index)
{        
    tempScroll = $(window).scrollTop();

    //Check for both references: "Top" of the range and "bottom"
    var top = index*settings.interval;
    var bottom = index*settings.interval + settings.range;

    var distanceFromTop = Math.abs(tempScroll-top);
    var distanceFromBottom = Math.abs(tempScroll-bottom);

    //Return the smallest distance
    if(distanceFromTop < distanceFromBottom)
    {
        return distanceFromTop;
    }
    else
    {
        return distanceFromBottom;
    }        
};

var whwrap = $("#wholewrap").height();
var wrap2 = $("#wrap2").height();
var mwrapEDIT = $("#middlewrap").height();
var mwrap = (mwrapEDIT * .8);

if(whwrap < 1500)
    {
        var setting2 = wrap2;
    }
    else
    {
        var setting2 = mwrap;
    }   




//=========================================================//
//Public closestIndex
//Purpose: Determines the closest index
//Postcondition: Returns the closest index as an integer
//=========================================================//
this.closestIndex = function()
{
    //If index is 0, automatically return 1
    if(settings.index === 0)
    {
        return 1;
    }        

    //Distance from next/previous index
    var dPrev = this.distanceFrom(settings.index-1);
    var dNext = this.distanceFrom(settings.index+1);

    //Return the index associated with the smallest distance
    if(dPrev <= dNext)
    {
        return settings.index-1;
    }
    else
    {
        return settings.index+1;
    }
};

//=========================================================//
//Private getIndex
//Purpose: returns index
//=========================================================//
var getIndex = function()
{        
    tempScroll = $(window).scrollTop() + settings.margin;        

    //Make sure movement would be in the bounds
    if(tempScroll > settings.start && tempScroll < setting2)
    {                                       
        //Possible new index
        tempIndex = Math.floor((tempScroll-settings.start)/settings.interval);

        //Make sure the index is different before reassigning
        //or executing the callback
        if(tempIndex !== settings.index)
        {
            //Store old index
            settings.oldIndex = settings.index;                

            //Assign new index
            settings.index = tempIndex;                
        }
    }
    //If tempScroll goes beyond end mark, set distance at end mark
    else if(tempScroll >= setting2)
    {
        settings.oldIndex = settings.index;
        settings.index = Math.floor((setting2-settings.start)/settings.interval);
    }
    //If tempScroll goes beyond beginning mark, set distance at start
    else
    {
        settings.oldIndex = settings.index;
        settings.index = 0;
    }        
};

//=========================================================//
//Public firstIndex
//Purpose: Returns first index
//Postcondition: Returns an integer
//=========================================================//
this.firstIndex = function()
{
    return 0;
};

//=========================================================//
//Public lastIndex
//Purpose: Returns last index
//Postcondition: Returns an integer
//=========================================================//
this.lastIndex = function()
{
    return Math.floor((setting2-settings.start)/settings.interval);
};

//=========================================================//
//Public inRange
//Purpose: Determines if the scroller is in interval range
//Postcondition: Returns boolean
//=========================================================//
this.inRange = function()
{      
    var scroll = $(window).scrollTop() - settings.start + settings.margin;        

    var inRange = (scroll >= settings.index * settings.interval) &&
    (scroll <= (settings.index*settings.interval + settings.range));

    return inRange;
};


//------------------------------------------------------------//
//                    On Browser Scroll                       //
//------------------------------------------------------------//    
var wrap = $('<div id="scrollcontainer">').css(
{
    width: obj.width(),
    height: obj.height(),
    position: "absolute"
});

obj.wrap(wrap);

$(window).scroll(function()
{
    scroll = $(window).scrollTop() + settings.margin;

    //Get the current index
    getIndex();

    //If scroll less than beginning, set back to beginning
    if(scroll < settings.start)
    {
       $(obj).css({
        position : 'absolute',
        top: 0,
        left: 0,
        right: 0});

       $("#scrollcontainer").css({
        position : 'absolute',
        top: settings.start,
        left: left,
        right: right});
    }

    //If scroll greater than ending position, set to end
    else if(scroll > setting2) 
    {
       $(obj).css({
        position : 'absolute',
        top: 0,
        left: 0,
        right: 0});

       $("#scrollcontainer").css({
        position : 'absolute',
        top: setting2,
        left: left,
        right: right});

    }

    //Make sure we stay in the specified boundaries
    else
    {
        //Put back to fixed
        $(obj).css({
        position : 'fixed',
        top: settings.margin,
        left: left,
        right: right});
    }        

    //If in the specified range and a new index, do the callback        
    if(settings.oldIndex !== settings.index)
    {
       Callback.newIndex(settings.index);
    }

    //Do the "limbo" call back, which is a callback that executes when
    //the scroller is not in the range, but still between start and end
    if( !$this.inRange() && scroll > settings.start && scroll < setting2 )
    {
       Callback.limbo(settings.index);
    }

    //Do the scroll callback regardless of what happens
    Callback.scroll(settings.index);
});
功能粘滞滚动条(obj,选项)
{        
//存储功能范围
var$this=这个;
//存储初始顶部和左/右值
var top=$(obj.css('top');
var left=$(obj.css('left');
var right=$(obj.css('right');
var=0;
var=0;
//------------------------------------------------------------
//设置默认属性值
//------------------------------------------------------------
var默认值={
起点:0,
完:1000,,
间隔时间:400,,
边距:parseInt(顶部,10),
射程:400
},settings=jQuery.extend(默认值,选项);
obj=$(obj);
settings.index=0;
settings.oldIndex=0;
//设置的访问器
getters({scope:$this,obj:settings});
//------------------------------------------------------------//
//回调函数//
//------------------------------------------------------------//
var Callback={};
Callback.newIndex=function(){};//当索引更改时
Callback.limbo=function(){};//当滚动条不在范围内时
Callback.scroll=函数(){};//在窗口滚动上
//获取回调函数的setter
setters({scope:this,前缀:“on”,obj:Callback});
//=========================================================//
//公共距离
//用途:以像素为单位确定之间的距离
//滚动条和索引
//参数:
//索引:将计算其与滚动条的距离的索引
//后置条件:返回一个整数
//=========================================================//
this.distanceFrom=函数(索引)
{        
tempScroll=$(窗口).scrollTop();
//检查两个参考:范围的“顶部”和“底部”
var top=索引*设置.interval;
var bottom=索引*settings.interval+settings.range;
var distance fromtop=Math.abs(临时滚动顶部);
var distanceFromBottom=Math.abs(临时滚动底部);
//返回最小距离
if(距离顶部<距离底部)
{
返回距离;
}
其他的
{
从底部返回距离;
}        
};
var whwrap=$(“#wholewrap”).height();
var wrap2=$(“#wrap2”).height();
var mwrapEDIT=$(“#中间包裹”).height();
var mwrap=(mwrapEDIT*.8);
如果(whwrap<1500)
{
var设置2=wrap2;
}
其他的
{
var设置2=mwrap;
}   
//=========================================================//
//公共封闭索引
//目的:确定最接近的索引
//后置条件:以整数形式返回最接近的索引
//=========================================================//
this.closestinex=函数()
{
//如果索引为0,则自动返回1
如果(settings.index==0)
{
返回1;
}        
//与下一个/上一个索引的距离
var dPrev=此.distanceFrom(settings.index-1);
var dNext=this.distanceFrom(settings.index+1);
//返回与最小距离关联的索引
if(dPrev settings.start&&tempsroll=设置2)
{
settings.oldIndex=settings.index;
settings.index=Math.floor((setting2 settings.start)/settings.interval);
}
//如果tempScroll超出开始标记,请在开始时设置距离
其他的
{
settings.oldIndex=settings.index;
settings.index=0;
}        
};
//=========================================================//
//公共优先索引
//目的:返回第一个索引
//后置条件:返回一个整数
//=========================================================//
this.firstIndex=函数()
{
返回0;
};
//=========================================================//
//公共最新索引
//目的:返回最后一个索引
//后置条件:返回一个整数
//=========================================================//
this.lastIndex=函数()
{
返回Math.floor((setting2 settings.start)/settings.interval);
};
//=========================================================//
//公共范围
//目的:确定滚动条是否在间隔范围内
//后置条件:返回布尔值
//=========================================================//
this.inRange=函数()
{      
var scroll=$(窗口).scrollTop()-settings.start+settings.margin;
var inRange=(滚动>=settings.index*settings.interval)&&
(滚动设置2)
{
$(obj).css({
位置:'绝对',
排名:0,
左:0,,
右:0});
$(“#滚动容器”).css({
位置:'绝对',
顶部:设置2,
div#menuwrap {
    position: fixed;
    left: 0;
    top: 5%;
}