导航链接的上一个/下一个按钮

Posted

技术标签:

【中文标题】导航链接的上一个/下一个按钮【英文标题】:Prev/Next Buttons for Navigation Links 【发布时间】:2013-08-02 21:40:44 【问题描述】:

我正在寻找一种解决方案,让“上一个”和“下一个”箭头在导航链接中循环。与下面的链接类似,但当您单击 Prev 或 Next you 时,它会将您带到导航 li 中的下一个锚点并加载新页面。

 <div id="nav" class="text-spacing">
  <ul id="nav">
    <li><a href="/news.html" class="nav-button">News</a></li>
    <li><a href="/tourdates.html" class="nav-button">Tour Dates</a></li>
    <li><a href="/music.html" class="nav-button navSelected">Music</a></li>
    <li><a href="/video" class="nav-button">Video</a></li>
    <li><a href="/about" class="nav-button">About</a></li>
    <li><a href="/contact" class="nav-button">Contact</a></li>
  </ul>
</div>

<div id="arrow-left" class="slide-right"><a href="#" class="prev-button" title="Previous"><img src="images/arrow-left.png"   ></a></div>
<div id="arrow-right" class="slide-left"><a href="#" class="next-button" title="Next"><img         src="images/arrow-right.png"   ></a></div

$(document).ready(function () 
    $('.next-button').click(function () 
        var $el = $('#nav li a.navSelected').removeClass('navSelected');
        var $next = $el.parent().next();

        if ($next.length == 0) $next = $('#nav li:first');

        $next.find('a.nav-button').addClass('navSelected');
    );


    $('.prev-button').click(function () 
        var $el = $('#nav li a.navSelected').removeClass('navSelected');
        var $prev = $el.parent().prev();

        if ($prev.length == 0) $prev = $('#nav li:last');

        $prev.find('a.nav-button').addClass('navSelected');
    );
);

http://jsfiddle.net/Zevan/H2hjr/

首页 |音乐 |视频 |联系方式

上一个 // 下一个

【问题讨论】:

您希望它如何加载新页面? 但是你的小提琴有不同的代码,没有锚。即使您不能完全让 JS 以您想要的方式工作,为什么不更新它以至少包含带有锚点的 html。此外,鉴于您的示例 html 很短(并且在您添加锚之后仍然会如此),您应该将它直接包含在问题中(除了小提琴)。 我不精通 javascript。我通过更改类看到此代码在我的导航链接中循环。单击以转到导航中的下一个链接并加载它时,我会喜欢左右箭头。这可能吗? 更新代码以显示我的导航和左右箭头按钮 【参考方案1】:

您可以从链接中获取href 并使用它来触发window.location.href,如下所示:

$(document).ready(function () 
    $('.next-button').click(function () 
        var $el = $('#nav li a.navSelected').removeClass('navSelected');
        var $next = $el.parent().next();

        if ($next.length == 0) $next = $('#nav li:first');

        $next.find('a.nav-button').addClass('navSelected');

        // Added window.location.href to follow the selected links href
        window.location.href = $next.find('a.nav-button').attr('href');
    );


    $('.prev-button').click(function () 
        var $el = $('#nav li a.navSelected').removeClass('navSelected');
        var $prev = $el.parent().prev();

        if ($prev.length == 0) $prev = $('#nav li:last');

        $prev.find('a.nav-button').addClass('navSelected');
        // Added window.location.href to follow the selected links href
        window.location.href = $prev.find('a.nav-button').attr('href');

    );
);

【讨论】:

太棒了!非常感谢! 不客气。如果这对您有所帮助,您能否接受这个答案。谢谢 实际上,这是出于某种原因在第一个链接和最后一个链接之间循环。知道为什么吗? 当您转到另一个页面时,您需要将当前导航项设置为活动状态,否则您会得到相同的链接。

以上是关于导航链接的上一个/下一个按钮的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 的上/下/左/右键盘导航?

按下按钮并成功重定向到另一个页面后,如何禁用导航栏链接?

PHP中的上一个/下一个按钮

基于导航的应用程序的翻转动画

iPhone:inputAccessoryView 上的上一个/下一个按钮的透明度不同

跨 UITableView 自定义单元格处理键盘的上一个、下一个和完成按钮