带提取功能的JQuery滚动条
有人能解释为什么我的代码不起作用吗?我只是想提取一个函数:带提取功能的JQuery滚动条,jquery,Jquery,有人能解释为什么我的代码不起作用吗?我只是想提取一个函数: $(document).ready(function(){ $('section.bgParallax').each(function(){ var $obj = $(this); $(window).scroll(function() { var yPos = -($(window).scrollTop() / $obj.data('speed'));
$(document).ready(function(){
$('section.bgParallax').each(function(){
var $obj = $(this);
$(window).scroll(function() {
var yPos = -($(window).scrollTop() / $obj.data('speed'));
var bgpos = '50% '+ yPos + 'px';
$obj.css('background-position', bgpos );
});
});
$(window).scroll(function(){
doScroll($obj);
});
这是行不通的:
$(document).ready(function(){
var doScroll = function($div) {
var yPos = -($(window).scrollTop() / $div.data('speed'));
var bgpos = '50% '+ yPos + 'px';
$div.css('background-position', bgpos );
};
$('section.bgParallax').each(function(){
var $obj = $(this);
$(window).scroll(doScroll($obj));
});
});
我刚刚尝试提取函数,但在scroll上没有调用我的函数。函数$(窗口)。scroll
必须是接收函数作为参数的事件
它不起作用,因为您正在调用函数doscorl
,并将其返回值作为参数传递给$(窗口)。滚动
。您应该传递doScroll函数:
$(窗口)。滚动(doScroll)代码>
但由于需要向其传递参数,因此可以将其包装在匿名函数中:
$(document).ready(function(){
$('section.bgParallax').each(function(){
var $obj = $(this);
$(window).scroll(function() {
var yPos = -($(window).scrollTop() / $obj.data('speed'));
var bgpos = '50% '+ yPos + 'px';
$obj.css('background-position', bgpos );
});
});
$(window).scroll(function(){
doScroll($obj);
});
您可以使用console.log(“某物”)代码>以调试代码。添加console.log($obj)代码>在var$obj=$之后(此)代码>和控制台日志(yPos)代码>在doscorl
函数的第一行之后。我正在用console.log调试,这些函数只在页面加载时调用,而不是在滚动时调用。还有其他想法吗@科德兹