0

我有 10 页内容,每个页面上的分页对象都是使用 php 完成的。这允许用户通过单击页码查看他/她希望查看的任何页面的内容。

现在我想添加一个下一个和上一个按钮,允许用户查看下一页或上一页。

在 codef0rmer 的指导下,我已将下一个按钮更改为以下 jquery 代码。当我单击下一步按钮时,后续页面的内容将显示在 div 内容列中。但是,现在有 2 个下一个按钮、2 个上一个按钮和 2 个分页对象。

如何在没有额外的下一个、上一个按钮和分页对象的情况下只显示要显示的内容?

我是 jquery 的初学者.....我非常感谢任何帮助。

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" 
rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script type="text/javascript">
 $(document).ready(function(){
     var pg=1;
    //$("#contentcolumn:first").show("slide",{'direction':"left"},1000);
    $('#next').click(function () {
         if(pg<=10){
            pg=pg+1;
            page_str="page="+pg;
            $.get('index2.php',page_str , function(data) {
              $('#contentcolumn').html(data).show("slide",{'direction':"left"},1000);
             });
          };    
   })//end $('#next').click
})//end document(ready)
</script>

我的html和php代码:

<body>
<div id="maincontainer">
<div id="contentwrapper">
<div id="leftcolumn">
<div class="innertube">
<input type="button" id="left_but" value="Left"  />
</div>
</div>
<div id="contentcolumn">
<div class="innertube">
<?php
$pagination='';
if (function_exists("curl_init")){
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"http://feeds.feedburner.com/rb286");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $data=curl_exec($ch);
    curl_close($ch);
    //print_r($data);
    $doc=new SimpleXmlElement($data);
    //$doc=simpleXml_load_file("http://feeds.feedburner.com/rb286?format=xml");
    //$doc=simpleXml_load_string($data); 
    $xml = simplexml_import_dom($doc);    
    if (!$xml) { 
    echo 'Error while parsing the document'; 
    exit; 
     } 

    //print_r($doc);
}

function paginateFunc($xml){
global $pagination;
$disp_arr = array();
$image_array=array();
// How many adjacent pages should be shown on each side?
    $adjacents =3;

    $items=$xml->xPath('/rss/channel/item');
    $count=count($items);
    $total_pages = $count;

    /* Setup vars for query. */
    $targetpage = "index2.php";     //your file name  (the name of this file)
    $limit = 1;                                 //how many items to show per page
    $page = $_GET['page'];
    if($page) 
        $start = ($page - 1) * $limit;          //first item to display on this page
    else
        $start = 0;                             //if no page var is given, set start to 0


    /* Setup page vars for display. */
    if ($page == 0) $page = 1;                  //if no page var is given, default to 1.
    $prev = $page - 1;                          //previous page is page - 1
    $next = $page + 1;                          //next page is page + 1
    $lastpage = ceil($total_pages/$limit);      //lastpage is = total pages / items per page, rounded up.
    $lpm1 = $lastpage - 1;                      //last page minus 1



    //echo("HALLO");
    foreach ($xml->xpath('//item/content:encoded') as $desc) { 
        preg_match_all('/(?<imgs><img[^>]+>)/m', $desc, $m); 
             } 
    foreach($items as $key => $item){ 
                //if( ( $key >= $start) && ($key < $start + $limit) ){ 
                    $disp_array[$key]['link']=$item[0]->link;
                    $disp_array[$key]['title']=$item[0]->title;
                    $disp_array[$key]['desc']=$item[0]->description;

    }//end foreach($items 


    foreach($disp_array as $key=>$disp){
            if($key == $start){
                 echo("<a href='".$disp_array[$key]['link']."'>".$disp_array[$key]['title']."</a><br>");
                 echo($disp_array[$key]['desc']."<br>");
                 //echo(count($m['imgs']));
                 //echo("<img src='".$m['imgs'][$key]."'/>");
              }

    } 
    echo("</div>");//end div innertube
    echo("</div>");//end div contentcolumn
    echo("<div id='rightcolumn'>");
    echo("<div class='innertube'>");
    echo("<input type='button' id='right_but' value='Right' />");
    echo("</div>");//end div innertube
    echo("</div>");
    echo("<div id='footer'>");
    /* 
        Now we apply our rules and draw the pagination object. 
        We're actually saving the code to a variable in case we want to draw it more than once.
    */
    //$pagination = "";
    if($lastpage > 1)
    {   
        $pagination .= "<div class=\"pagination\">";
        //previous button
        if ($page > 1) 
            $pagination.= "<a href=\"$targetpage?page=$prev\">� previous</a>";
        else
            $pagination.= "<span class=\"disabled\">� previous</span>"; 

        //pages 
        if ($lastpage < 7 + ($adjacents * 2))   //not enough pages to bother breaking it up
        {   
            for ($counter = 1; $counter <= $lastpage; $counter++)
            {
                if ($counter == $page)
                    $pagination.= "<span class=\"current\">$counter</span>";
                else
                    $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";                 
            }
        }
        elseif($lastpage > 5 + ($adjacents * 2))    //enough pages to hide some
        {
            //close to beginning; only hide later pages
            if($page < 1 + ($adjacents * 2))        
            {
                for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<span class=\"current\">$counter</span>";
                    else
                        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";                 
                }
                $pagination.= "...";
                $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
                $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";       
            }
            //in middle; hide some front and some back
            elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
            {
                $pagination.= "<a href=\"$targetpage?page=1\">1</a>";
                $pagination.= "<a href=\"$targetpage?page=2\">2</a>";
                $pagination.= "...";
                for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<span class=\"current\">$counter</span>";
                    else
                        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";                 
                }
                $pagination.= "...";
                $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
                $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";       
            }
            //close to end; only hide early pages
            else
            {
                $pagination.= "<a href=\"$targetpage?page=1\">1</a>";
                $pagination.= "<a href=\"$targetpage?page=2\">2</a>";
                $pagination.= "...";
                for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<span class=\"current\">$counter</span>";
                    else
                        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";                 
                }
            }
        }

        //next button
        if ($page < $counter - 1) 
            $pagination.= "<a href=\"$targetpage?page=$next\">next �&lt;/a>";
        else
            $pagination.= "<span class=\"disabled\">next �&lt;/span>";
        $pagination.= "</div>\n";       
    }

    }


    if (isset($doc->channel)) paginateFunc($doc);
    ?>
    <?php 
    echo($pagination);
    ?>
    </div><!--closing tag for div footer-->
    </div><!--closing tag for div contentwrapper-->
    </div><!--closing tag for div maincontainer-->
    </body>
    </html>
4

2 回答 2

1

由于您没有共享太多代码,因此我将概述如何完成它。

我认为您应该隐藏当前可见的内容窗口并找到下一张幻灯片并显示它。

$('#next').click(function () {
    $("div:visible").hide()
        .next().show("slide",{'direction':"left"},1000);
});

$('#prev').click(function () {
    $("div:visible").hide()
        .prev().show("slide",{'direction':"right"},1000);
});

演示:http: //jsfiddle.net/codef0rmer/E7U82/

于 2012-07-25T07:39:43.057 回答
0

经过几天的研究,我在http://jc-designs.net/blog/2010/03/jquery-slider-tutorial-for-beginners-how-i-did-mine/找到了这个关于 jquery 滑块的很酷的初学者教程....解释是针对像我这样的傻瓜。

在上述网站的指导下,我设法想出了以下代码。我已经将 rss 提要下载到一个文件中(使用 php),创建了下一个和上一个按钮和控制列表 - 用于分页(使用 jquery),3 列布局 - 固定、流动、固定。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 

Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<style type="text/css">
body{margin:0;
padding:0;
}
#leftcolumn{
float:left;
margin-right:-200px;
}
#slidecontent{
width:550px;
height:450px;
float:left;
margin:0 200px 0 200px;
border:solid thin #FF3333;
overflow:hidden;
}
#slidewrap{
width:5500px;
height:450px;
top:0;
left:0;
}
.slide{
float:left;
width:550px;
height:450px;
}
#rightcolumn{
float:left;
margin-left:-200px;
}
#controllist{
clear:both;
text-align:center;
padding:4px;
}
ul{
list-style-type:none;
}
ul li{
display:inline;
}
</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-ui/ui/jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#controlleft").hide();
    var currentPosition=0;
    var slideWidth=550;
    var count=0;
    var html="";
    var rss_link="";
    var rss_title="";
    var rss_desc="";
    $.get("rss.xml",function(data){
        $(data).find("item").each(function(){
            count+=1;
            rss_title=$(this).find("title").text();
            rss_link=$(this).find("link").text();
            rss_desc=$(this).find("description").text();
            html+="<div class='slide'><a href='"+rss_link+"'>"+rss_title+"</a>"+rss_desc+"</div>";
          }); //end find data
         $("#slidewrap").append($(html));

         html="<ul>";
         for (i=1;i<=count;i++){
             if (i<10){
                 html+="<li><a href='#'>"+i+"</a></li> | ";
             }else{
                 html+="<li><a href='#'>"+i+"</a></li>";
             }
         }
         html+="</ul>";
         $("#controllist").append($(html));

     });//end get

     function controlMechanism(){
            if (currentPosition>=9){
                $("#controlright").hide();
            }else{
                $("#controlright").show();
            }

            if (currentPosition<=0){
                $("#controlleft").hide();
            }else{
                $("#controlleft").show();
            }
     }//end controlMechanism

       //code for next and previous buttons
     $(".controls").click(function(event){
        event.preventDefault();
        if ($(this).attr('id')=="controlright"){
            currentPosition+=1;
        }else{
            currentPosition-=1;
        };
        $("#slidewrap").animate({"marginLeft" : slideWidth*(-currentPosition)});

        controlMechanism();
     });//end controls click

      //this controls the pagination
     $("#controllist ul li").click(function(event){
        event.preventDefault();
        currentPosition=$(this).index();

        $("#slidewrap").animate({"marginLeft" : slideWidth*(-currentPosition)});

        controlMechanism();
     });// end controllist click


});
</script>
</head>

<body>
<?php
//downloading rss feed into a file
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"http://feeds.feedburner.com/rb286");
$fp=fopen('rss.xml','w');
curl_setopt($ch,CURLOPT_FILE,$fp);

$data=curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
<div id="leftcolumn">
<a href="#" class="controls" id="controlleft">&lt;</a>
</div>
<div id="slidecontent">
    <div id="slidewrap">
    </div>
</div>
<div id="rightcolumn">
<a href="#" class="controls" id="controlright">&gt;</a>
</div>
<div id="controllist">
</div>
</body>
</html>
于 2012-08-01T06:57:05.673 回答