【问题标题】:Paginated jQuery Result Set from XML File Problem来自 XML 文件问题的分页 jQuery 结果集
【发布时间】:2011-02-01 04:00:38
【问题描述】:

我正在开发一个代码来一次显示 10 个杂志,该代码是从一个 xml 文件提供的。我有它在某种程度上工作,FF和IE7 + 8不喜欢它,也许正如它所说的第62行有一个错误 - 是调用要输入的数据的核心函数。

这是我的代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="robots" content="noindex, nofollow" />
<title>Brave Creative - Online Archive</title>
<link rel="stylesheet" href="css/global.css" media="screen" />
<script type="text/javascript" charset="UTF-8" src="js/jquery.js"></script>
<script type="text/javascript">

$(document).ready(function() {

 $.ajax({
    type: "GET",
    url: "issues.xml",
    dataType: "xml",
    success: function(xml) {

    var shelf = $('#shelf-items');
                var startIndex = 0; 
                var howMany = 10; 
                var $issues = $(xml).find('issue'); 
                var totalIssues = $issues.length;
    var numPages = Math.ceil(totalIssues / howMany)

    $('span.issuecount').html(+totalIssues+'&nbsp;Issues - '+numPages+'&nbsp;Pages');

                var displayIssues = function() {
                      var $issuesPaginated = $issues.slice( startIndex , (totalIssues - startIndex) + howMany );
                      $('#shelf-items li').fadeOut(500); 
                      $issuesPaginated.each(function(){
                          var id = $(this).attr('id');
                          var date = $(this).find('date').text();
                          var cover = $(this).find('cover').text();
                          var issue = $(this).find('issuenumber').text();
                          var url = $(this).find('url').text();
                          $('<li id="'+id+'"></li>').html('<a href="'+url+'"><img src="images/covers/'+cover+'" alt="" /></a><br />'+date+' - #'+issue+'').fadeIn(500).appendTo(shelf);
                      });
                }

                $('#prevIssueButton').click(function() {
                    if( startIndex < howMany) {
                        startIndex -= howMany;
                        displayIssues();
                    }else {
      startIndex = 0;
                        displayIssues();
      $('span.error').html('No Issues to Display - You are now on Page 1').fadeIn(300).fadeOut(3000);
                    }
                });
                $('#nextIssueButton').click(function() {
      if( startIndex + howMany <= totalIssues) {
                        startIndex += howMany;
                        displayIssues();
                    }else {
      $('span.error').html('No Issues to Display - You are now on Page 1').fadeIn(300).fadeOut(3000);
                        startIndex = 0;
                        displayIssues();

                    }
                });
                displayIssues().fadeIn(500); 
            }
   }); // end ajax call

}); // end document-ready

</script>
</head>
<body>

<div id="bc-publish"><span></span></div>

<br />

<div id="wrapper">

 <header>
  <h1>Online Archive: <span>FSM</span></h1>
 </header>

    <section id="buttons">

     <a href="#" id="prevIssueButton" title="Toggle Previous Entries">Previous</a>
        <a href="#" id="nextIssueButton" title="Toggle Next Entries">Next</a>

        <span class="error"><a></a></span>

        <div class="clear"></div>

    </section> <!-- /buttons -->

    <section id="shelf">

     <ul id="shelf-items"></ul>

        <div class="clear"></div>

    </section> <!-- /shelf -->
    <br />
    <span class="issuecount"></span>

    <br /><br />

    <span class="logo"><a href="http://www.bravecreative.co.uk" title="Brave Creative"><img src="images/brave-creative-logo.jpg" alt="Brave Creative" /></a></span>
    <span class="address">

     <span>t.</span> 01733 392978 <span>m.</span> 07719442825<br />
  <span>e.</span> tony@bravecreative.co.uk<br />
        4 Milnyard Square, Orton Southgate, Peterborough PE2 6CX

    </span>

    <div class="clear"></div>

</div> <!-- /wrapper -->

</body>
</html>

上一个和下一个按钮无法正常工作,例如,我单击下一个并转到第 2 页,再次单击下一个 - 其空白,最后一次单击一个,当我被告知我没有更多结果可查看时。但是如果我单击上一个开始并返回 3 次(重新开始)然后单击下一步我可以循环回到相同的问题,这真的让我感到困惑,任何帮助将不胜感激!

【问题讨论】:

    标签: javascript jquery css pagination


    【解决方案1】:

    刚刚阅读了您的代码,我有几点意见。

    这个:

    $('span.issuecount').html(+totalIssues+'&nbsp;Issues - '+numPages+'&nbsp;Pages');
    

    “totalIssues”之前应该没有“+”,还是我遗漏了什么?

    $('span.issuecount').html(totalIssues+'&nbsp;Issues - '+numPages+'&nbsp;Pages');
    

    结束

    $('<li id="'+id+'"></li>').html('<a href="'+url+'"><img src="images/covers/'+cover+'" alt="" /></a><br />'+date+' - #'+issue+'').fadeIn(500).appendTo(shelf);
    

    似乎以错误的顺序做事,不是吗?先淡出再追加?

    这个

    $('#prevIssueButton').click(function() {
                    if( startIndex < howMany) {
                        startIndex -= howMany;
                        displayIssues();
    

    看起来也很奇怪,如果 startIndex 确实小于 howMany,那么调用后 startIndex 将为负数,这是故意的吗?

    那么我不确定将所有代码都放在 Ajax 调用的成功事件处理程序中是否是个好主意。我会在某种程度上将这些东西分开,但也许你已经尝试过并决定这样做。这只是一个想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多