我开始使用JQuery和Javascript并进行视差滚动练习,我遇到了一个问题。
每次用户滚动时,我都会在<p></p>
中写入var的值。
该值是滚动位置值与其他值之间的操作结果。
如果我把这个最后一个值设置为函数中的固定数字,那么每次使用滚动条时它都会改变,但是如果我把这个值像函数中的参数一样,那么只有函数计算滚动的第一个动作,并将结果放在<p></p>
。
这是两个代码:
每次移动滚动时,<p></p>
中的数字都会发生变化
$(window).on("scroll", parallax);
function parallax(){
var scrollSize=$(window).scrollTop();
var scrollParallax=Number(scrollSize*0.5);
$("p").text(scrollParallax);
}
<p></p>
中的数字没有变化,只显示var的第一个值
$(window).on("scroll", parallax(0.5));
function parallax(medida){
var scrollSize=$(window).scrollTop();
var scrollParallax=Number(scrollSize*medida);
$("p").text(scrollParallax);
}
有什么区别?
为什么会这样?
答案 0 :(得分:2)
这是因为.on()期望处理程序参数的函数名或函数定义。
.on(events [,selector] [,data],handler)
在启动时,Javascript正在执行parallax(0.5)
以找到它需要调用的函数。它找不到函数,因此它现在处于错误状态,并且事件永远不会触发。
请参阅我的代码段中的区别。
function
使用parallax
并且有效,Function Result
使用parallax(0.5)
而无法使用
$('#eventBtn').on("click", parallax);
$('#resBtn').on("click", parallax(0.5));
function parallax(medida){
alert('parallax ran' + medida)
$("p").text(new Date().getTime());
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Text</p>
<button id="eventBtn" type="button">Function</button>
<button id="resBtn" type="button">Function Result</button>