【问题标题】:jQuery sliding containers to left and right with arrowsjQuery用箭头左右滑动容器
【发布时间】:2013-07-02 04:04:06
【问题描述】:

我正在开发一个网页,我使用了这个教程:http://blog.themeforest.net/tutorials/create-a-funky-parallax-background-effect-using-jquery/

现在我想使用“上一个”和“下一个”按钮来控制页面的滚动。我似乎无法找到它应该如何工作。

让滑动容器工作的代码是这样的:

$('a.link').click(function () {  
        $('#wrapper').scrollTo($(this).attr('href'), 800);
        setPosition($(this).attr('href'), '#cloud1', '0px', '400px', '800px', '1200px', '1600px', '2000px')
        setPosition($(this).attr('href'), '#cloud2', '0px', '800px', '1600px', '2400px', '2800px', '3200px')
        $('a.link').removeClass('selected');  
        $(this).addClass('selected');
        return false;  
    }); 
});

function setPosition(check, div, p1, p2, p3, p4, p5, p6) {
if(check==='#box1')
    {
        $(div).scrollTo(p1, 800);
    }
else if(check==='#box2')
    {
        $(div).scrollTo(p2, 800);
    }
else if(check==='#box3')
    {
        $(div).scrollTo(p3, 800);
    }
else if(check==='#box4')
    {
        $(div).scrollTo(p4, 800);
    }
else if(check==='#box5')
    {
        $(div).scrollTo(p5, 800);
    }
else 
    {
        $(div).scrollTo(p6, 800);
    }
};

我创建了一个像这样的上一个和下一个按钮

    <input type="button" class="next">
    <input type="button" class="prev">

我尝试实现此选项,但没有成功:http://jsfiddle.net/ARTsinn/s2TJQ/4/

我认为这应该很简单,但我就是无法让它发挥作用。提前致谢!

【问题讨论】:

  • jsfiddle 对我有用,又是什么问题?
  • @thomasjaworski.com 我尝试实现 jsfiddle,但它对我不起作用。所以,我应该能够使用箭头向左移动“800px”,向右移动“800px”,但我无法让它工作。
  • 首先,您的左右按钮似乎是输入字段,但您的 JS 正在检查具有“链接”类的锚点上的点击事件

标签: jquery css next


【解决方案1】:

我想我现在明白你想要达到的目标了。好吧,实际上您要使用的源代码不是很好,这使事情更难解决。

首先,默认情况下给第一个链接'selected'类:

<li><a href="#box1" class="selected link">Home</a></li>

这是点击的原始处理程序(仅供参考/您的理解):

$('a.link').click(function () {  
    $('#wrapper').scrollTo($(this).attr('href'), 800);
    setPosition($(this).attr('href'), '#cloud1', '0px', '400px', '800px', '1200px')
    setPosition($(this).attr('href'), '#cloud2', '0px', '800px', '1600px', '2400px')
    $('a.link').removeClass('selected');  
    $(this).addClass('selected');
    return false;  
});  

现在,您要做的是将它的主体提取到一个方法中,它看起来像这样:

function performScroll(boxHref) {
    $('#wrapper').scrollTo($(boxHref).attr('href'), 800);
    setPosition($(boxHref).attr('href'), '#cloud1', '0px', '400px', '800px', '1200px')
    setPosition($(boxHref).attr('href'), '#cloud2', '0px', '800px', '1600px', '2400px')
    $('a.link').removeClass('selected');  
    $(boxHref).addClass('selected');
}

$('a.link').click(function () {  
    performScroll(this);
    return false;  
});  

现在,您已经提取了 click 方法,我们将在 Next/prev 处理程序中使用它:

$('.next').click(function () {  
    // find current selected item
    var nextBox = $("a", $("li > a.selected").parent().next());
    performScroll(nextBox);
    return false;  
});

这对你有用吗?如果是,那么现在您面临的挑战是:自己实现“上一个”按钮! :)

编辑

更正了 .next 处理程序

【讨论】:

  • 您能否确保您在原始代码中使用的是当前的 JQuery 版本(例如 1.9.1)而不是旧的 1.3.2 版本?
  • OOOMG!你是我的英雄。好的,对不起,但非常感谢你,它有效!!!!我会接受挑战并尝试自己获得“上一个”按钮,谢谢!
  • Got it: $('.prev').click(function () { // 查找当前选中项 var prevBox = $("a", $("li > a.selected") .parent().prev()); performScroll(prevBox); return false; });
猜你喜欢
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
相关资源
最近更新 更多