首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery加载方法来异步加载下一页和上一页

jQuery加载方法来异步加载下一页和上一页
EN

Stack Overflow用户
提问于 2014-05-03 14:22:51
回答 2查看 2.5K关注 0票数 0

我正在创建一个分页,它使用jQuery load方法将页面加载到div中。我想添加一个下一个和前一个按钮,允许用户在点击div "#content“时加载下一页或前一页。我已经研究过jQuery、.prev()和.next()方法,但是我不知道如何在这里合并这些方法来实现我的目标。欢迎任何建议或演示。提前谢谢你。

代码语言:javascript
复制
//References
var sections = $("a"),
   pageBody = $("#content"); //new/prev pages load in this div

//Manage click events
sections.on('click', function () {

   //load selected section
   switch (this.id) {
   case "page-1":
      pageBody.load("page1.html");
      break;
   case "page-2":
      pageBody.load("pagee2.html");
      break;
   case "page-3":
      pageBody.load("page3.html");
      break;
   case "page-4":
      pageBody.load("page4.html");
      break;
   case "page-5":
      pageBody.load("page5.html");
      break;
   default:
      break;
   }
});

这是我的HTML:

代码语言:javascript
复制
<div id="content">

   <h2>Page TITLE</h2>
   <p>Page Text Goes Here</p>


   <div>
      <a class="prev" href="#"></a>
      <ul class="nav">
         <li>
            <a id="page-1" href="#"></a>
         </li>
         <li>
            <a id="page-2" href="#"></a>
         </li>
         <li>
            <a id="page-3" href="#"></a>
         </li>
         <li>
            <a id="page-4" href="#"></a>
         </li>
         <li>
            <a id="page-5" href="#"></a>
         </li>
      </ul>
      <a class="next" href="#"></a>
   </div>

</div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-03 14:36:34

将标记更改为

代码语言:javascript
复制
<div id="content">
    <h2>Page TITLE</h2>
    <p>Page Text Goes Here</p>

    <div> 
        <a class="prev" href="#"></a>

        <ul class="nav">
            <li><a id="page1" href="#"></a></li>
            <li><a id="page2" href="#"></a></li>
            <li><a id="page3" href="#"></a></li>
            <li><a id="page4" href="#"></a></li>
            <li><a id="page5" href="#"></a></li>
        </ul> 

        <a class="next" href="#"></a>

    </div>
</div>

然后用这样的方法

代码语言:javascript
复制
var sections = $(".nav a");

sections.on('click', function () {
    $("#content").load(this.id + '.html');
    sections.removeClass('active');
    $(this).addClass('active');
});

$('.next').on('click', function() {
    var idx = sections.index( sections.filter('.active') ) + 1;
    idx = idx > sections.length-1 ? 0 : idx;
    sections.eq(idx).trigger('click');
});

$('.prev').on('click', function() {
    var idx = sections.index( sections.filter('.active') ) - 1;
    idx = idx < 0 ? sections.length-1 : idx;
    sections.eq(idx).trigger('click');
});

它增加索引并获取下一个/前一个元素等等。

票数 2
EN

Stack Overflow用户

发布于 2014-05-03 14:45:03

给你的#content一个数据属性,然后使用它作为当前页面。

代码语言:javascript
复制
        <div id="content" data-nav="1">
            <h2>Page TITLE</h2>
            <p>Page Text Goes Here</p>
        <div>

            <a class="prev" href="#"></a>
            <ul class="nav">
                <li><a data-nav="1" href="#"></a></li>
                <li><a data-nav="2" href="#"></a></li>
                <li><a data.nav="3" href="#"></a></li>
                <li><a data.nav="4" href="#"></a></li>
                <li><a data.nav="5" href="#"></a></li>
            </ul>
            <a class="next" href="#"></a>
        </div>

那么您的脚本可以是这样的

代码语言:javascript
复制
//References
var sections = $("a"),
    pageBody = $("#content"),//new/prev pages load in this div
    prev = $(".prev"),
    next = $(".next");

//Manage click events
sections.on('click',changeSection(this.data('nav')));
prev.on('click',function() {
    // get the nav id
    navId = this.data('nav');
    prevId = navId - 1;

   //change the data
   changesection("page-" + prevId);
});


next.on('click',function() {
    // get the nav id
    navId = this.data('nav');
    prevId = navId + 1;

   //change the data
   changesection("page-" + prevId);
});

// You can place this function outside of the $(document).load 
function changeSection(id) {
 function(){
     // set the new nav
    pageBody.data('nav', id);
    //load selected section
    switch(id){
        case "1": 
                pageBody.load("page1.html");
                break;
        case "2": pageBody.load("pagee2.html");
                break;
        case "3": pageBody.load("page3.html");
                break;
        case "4": pageBody.load("page4.html");
                break;
        case "5": pageBody.load("page5.html");
                break;
        default:
                break;
    }
}

您可以在这里查看有关.data()的更多信息

这是我所做的一件快速的事情,通过重构上一次和下一次单击并将它们组合成一个函数(通过传递一个true/false来添加或删除一个函数),可以使这一点变得更好,而且您可能会放弃开关,直接通过一个变量从nav加载页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23445659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档