2014-10-18 73 views
0

我试图让滚动镇到约450px后,绝对的div成为固定。我有一些与jQuery合作的东西,但由于jQuery冲突,它破坏了一半的网站。下面是我想使用Javascript的CSS绝对修复问题

<script type="text/javascript"> 

function window_onload() { 
    window.addEventListener("scroll",wallpaper_reset_top,false); 
} 

var wallpaper_top=450; 

function wallpaper_reset_top() { 
    var scrollTop=document.documentElement.scrollTop||document.body.scrollTop; 
    if(scrollTop>wallpaper_top&&wallpaper.IdName==="wallpaper_absolute") { 
    document.getElementById("wallpaper").IdName="wallpaper_fixed"; 
    } 
    else if(scrollTop<wallpaper_top&&wallpaper.IdName==="wallpaper_fixed") { 
    document.getElementById("wallpaper").IdName="wallpaper_absolute"; 
    } 
} 

</script> 

这是一组的div的,这是在

<div id="body-wrapper"> 

    <?php if (is_home() || is_front_page()) { ?> 

    <?php if(get_option('mvp_wall_ad')) { ?> 

    <div id="wallpaper"> 

     <?php if(get_option('mvp_wall_url')) { ?> 

     <a href="<?php echo get_option('mvp_wall_url'); ?>" class="wallpaper-link" target="_blank"></a> 

     <?php } ?> 

我真的不知道我要去哪里错在这里的JavaScript,但基本上向下滚动时没有任何反应

+0

你什么手段有关打破由于jQuery的冲突一半的网站?你尝试[这](http://stackoverflow.com/questions/20594452/navigation-bar-fixed-after-scroll)后? – 2014-10-18 01:44:52

+0

什么是壁纸?我不明白wallpaper.idName。另外,你可以尝试在jQuery中使用noconflict,所以你可以使用(jQuery)而不是“$”。 – Charles 2014-10-18 01:46:33

+0

懒加载停止工作的所有的首页文章。我尝试过noconflict,但由于某种原因没有帮助。我认为这是加载另一个jquery库引起的问题。 Javascript更干净,并有一个解决方案发布如下 – ott 2014-10-18 02:31:53

回答

2

首先,纯粹的JavaScript的努力!我只是改变它周围有点像这样:

<script type="text/javascript"> 

window.onload = function() { 
    window.addEventListener("scroll",wallpaper_reset_top,false); 
} 

var wallpaper_top=450; 

function wallpaper_reset_top() { 
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; 
    if(scrollTop > wallpaper_top && document.getElementById("wallpaper").className === "wallpaper_absolute") { 
    document.getElementById("wallpaper").className = "wallpaper_fixed"; 
    } 
    else if(scrollTop < wallpaper_top && document.getElementById("wallpaper").className === "wallpaper_fixed") { 
    document.getElementById("wallpaper").className = "wallpaper_absolute"; 
    } 
} 
</script> 

而且你的HTML:

<div id="wallpaper" class="wallpaper_absolute"> 
+0

我喜欢这个纠正这个更正,会喜欢它,虽然等待OP的反馈,因为我现在无法测试它。 – Charles 2014-10-18 01:55:13

+0

对。我只是将window_onload更改为window.onload,以便它可以立即使用。 @ott - 如果你从其他地方调用该函数,这将是不必要的。 – Jonathan 2014-10-18 02:00:57

+0

也是使用getElementById正确引用className。 – Charles 2014-10-18 02:03:17