2016-07-26 54 views
1

我似乎无法弄清楚如何让JS工作。 scrollfunction的作品,但不是隐藏。无论如何,使用较少的代码行来做到这一点?我想要.down-arrowfade out之后50px并隐藏在50px之后它不能被点击。它正在我的网站和codepen上工作,但随后它随机停止工作。该代码显然是错误的,但不知何故,它正在...Javascript优化

JS:

$(window).scroll(function() { 
    $(".down-arrow").css("opacity", 1 - 
    $(window).scrollTop()/50); 
}); 

$(window).scroll(function() { 
    $(".down-arrow").hide(fast); 
    $(window).scrollTop() > 50); 
}); 

[编辑]

这是新的JS我上有明显语法错误和建议,意见写道:将其放置在同一个身体,我希望也是闲着:

$(window).scroll(function() { 
    $(".down-arrow").hide("fast"); 
    $(".down-arrow").css("opacity", 1 - 
     $(window).scrollTop()/50); 
}); 

但现在我想的箭头,当使用可以追溯到到顶部的50像素关口上方显示。

+1

也许是因为这是一个语法错误? – Bergi

+0

*“无论如何,用这么少的代码行就可以做到这一点吗?” - 无需定义两个独立的滚动处理程序,只需将这两个函数的主体放入单个函数中就可以调用'$ (窗口).scroll()'。 – nnnnnn

+0

是的@ lol @但它不止于此。 – ERIC

回答

5

首先的首先,有没有需要注册一个funcition两次

var element = $(".down-arrow"); 
$(window).scroll(function() { 
    if($(window).scrollTop() > 50){ 
    element.css("opacity","0"); 
    if(!element.hasClass("hidden")){ 
    element.addClass("hidden"); 
    } 
    }else{ 
    $('.down-arrow').removeClass("hidden") // if there is nothing, nothing to remove 
    $(".down-arrow").css("opacity", 1 -$(window).scrollTop()/50); 
    } 
}); 

一些CSS改变:

.down-arrow.hidden{ 
    display:none; 
} 
.down-arrow:hover { 
    //you have to overwrite inline opacity , which js makes.. 
    opacity: 1 !important; 
} 

现在,应该按预期工作,试试:)

+0

我在链接上这样做,所以只是改变不透明度不起作用,它必须被隐藏。否则,它仍然是可点击的。 – ERIC

+0

我编辑它以适合您的需求 –

+0

你是男人! :) – ERIC