具有提取功能的JQuery Scroll



有人能解释为什么我的代码不起作用吗?我只是想提取一个函数:

 $(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 );
        }); 
});

这不起作用:

$(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)); 
   });
});

我只是试图提取函数,但在滚动时没有调用我的函数。

函数$(window).scroll必须是接收函数作为参数的事件。

它不起作用,因为您正在调用函数doScroll并将其返回值作为参数传递给$(window).scroll。你应该通过你的doScroll功能:

$(window).scroll(doScroll);

但由于您需要将参数传递给它,因此可以将其封装在一个匿名函数中:

$(window).scroll(function(){
    doScroll($obj);
});

最新更新