使用 Jquery 让分页更漂亮

发布于 2024-12-03 17:22:48 字数 3490 浏览 0 评论 0原文

假设我的网站中有大量页面:

<div class="caja_paginas">
    <ul class="paginas"> 
        <li class="actual"><a href="/?tipo=links&amp;que=ultimas&amp;page=1">1</a></li>
        <li><a href="/?tipo=links&amp;que=ultimas&amp;page=2">2</a></li>
                <li><a href="/?tipo=links&amp;que=ultimas&amp;page=3">3</a></li>
                <li><a href="/?tipo=links&amp;que=ultimas&amp;page=4">4</a></li>
                <li><a href="/?tipo=links&amp;que=ultimas&amp;page=5">5</a></li>
                <li><a href="/?tipo=links&amp;que=ultimas&amp;page=6">6</a></li>
                <li><a href="/?tipo=links&amp;que=ultimas&amp;page=7">7</a></li>
                <li><a href="/?tipo=links&amp;que=ultimas&amp;page=8">8</a></li>
                <li><a href="/?tipo=links&amp;que=ultimas&amp;page=9">9</a></li>
          <!-- commented but i have like 1420 pages lol -->
         </ul>
</div>

我需要使其更漂亮(您可以查看 http:// /goo.gl/DO1do

所以我在考虑做类似的事情:

$(document).ready(function(){
    $('.caja_paginas ul.paginas li').hide();
    $('.caja_paginas ul.paginas li.actual').show();
    $('.caja_paginas ul.paginas li.actual').next('li').show();
    $('.caja_paginas ul.paginas li.actual').prev('li').show();
    $('.caja_paginas ul.paginas li').last().html('last').show();
});

这看起来像

[1][2][last] //当实际/当前是 [1]

[9][10][11][last] //当是[10]时;等等

但是我怎样才能让它看起来

[1][2][下一个][..][最后]

[上一个][..][9][10] [11][下一个][..][最后一个]

分别是?

或者也许你有更好的主意

-编辑-

我编辑了一些代码,使其看起来更好

    $(document).ready(function ()
{
    var actual = $(".caja_paginas ul.paginas li.actual a").text();
    var actual_html = $(".caja_paginas ul.paginas li.actual").html();
    var ultima = $(".caja_paginas ul.paginas li a").last().text();
    var actual_html = $(".caja_paginas ul.paginas li.actual").last().html();
    $(".caja_paginas #ellipsis").remove();
    $(".caja_paginas ul.paginas li").hide();
    $(".caja_paginas ul.paginas li.actual").show();
    $(".caja_paginas ul.paginas li.actual").next("li").show().after('<li id="ellipsis">...</a></li>');
    $(".caja_paginas ul.paginas li.actual").prev("li").show();
    $(".caja_paginas ul.paginas li").first().show();
    if (actual > 4)
    {
        $(".caja_paginas ul.paginas li").first().after('<li id="ellipsis">...</a></li>');
        $(".caja_paginas ul.paginas").prepend("<li>" + $(".caja_paginas ul.paginas li.actual").prev().html() + "</li>");
        $(".caja_paginas ul.paginas li a").first().text("<")
    }
    $(".caja_paginas ul.paginas li").last().show();
    $(".caja_paginas ul.paginas").append("<li>" + $(".caja_paginas ul.paginas li.actual").next().html() + "</li>");
    $(".caja_paginas ul.paginas li a").last().text(">")
});

并且可以在此处进行测试/修改: http://jsfiddle.net/q2WBG/1/

PD:对于 SEO 术语,我想保留 HTML 中页面的所有链接

Lets say there is a very large number of pages in my website:

<div class="caja_paginas">
    <ul class="paginas"> 
        <li class="actual"><a href="/?tipo=links&que=ultimas&page=1">1</a></li>
        <li><a href="/?tipo=links&que=ultimas&page=2">2</a></li>
                <li><a href="/?tipo=links&que=ultimas&page=3">3</a></li>
                <li><a href="/?tipo=links&que=ultimas&page=4">4</a></li>
                <li><a href="/?tipo=links&que=ultimas&page=5">5</a></li>
                <li><a href="/?tipo=links&que=ultimas&page=6">6</a></li>
                <li><a href="/?tipo=links&que=ultimas&page=7">7</a></li>
                <li><a href="/?tipo=links&que=ultimas&page=8">8</a></li>
                <li><a href="/?tipo=links&que=ultimas&page=9">9</a></li>
          <!-- commented but i have like 1420 pages lol -->
         </ul>
</div>

And i need to make it prettier (you can check at http://goo.gl/DO1do )

So i was thinking doing something like:

$(document).ready(function(){
    $('.caja_paginas ul.paginas li').hide();
    $('.caja_paginas ul.paginas li.actual').show();
    $('.caja_paginas ul.paginas li.actual').next('li').show();
    $('.caja_paginas ul.paginas li.actual').prev('li').show();
    $('.caja_paginas ul.paginas li').last().html('last').show();
});

this would look like

[1][2][last] //when actual/current is [1]

or

[9][10][11][last] //when is [10]; and so on

But how can i make it look

[1][2][next][..][last]

or

[prev][..][9][10][11][next][..][last]

respectively?

or maybe you have a better idea

-edit-

I edited a bit the code so it looks better

    $(document).ready(function ()
{
    var actual = $(".caja_paginas ul.paginas li.actual a").text();
    var actual_html = $(".caja_paginas ul.paginas li.actual").html();
    var ultima = $(".caja_paginas ul.paginas li a").last().text();
    var actual_html = $(".caja_paginas ul.paginas li.actual").last().html();
    $(".caja_paginas #ellipsis").remove();
    $(".caja_paginas ul.paginas li").hide();
    $(".caja_paginas ul.paginas li.actual").show();
    $(".caja_paginas ul.paginas li.actual").next("li").show().after('<li id="ellipsis">...</a></li>');
    $(".caja_paginas ul.paginas li.actual").prev("li").show();
    $(".caja_paginas ul.paginas li").first().show();
    if (actual > 4)
    {
        $(".caja_paginas ul.paginas li").first().after('<li id="ellipsis">...</a></li>');
        $(".caja_paginas ul.paginas").prepend("<li>" + $(".caja_paginas ul.paginas li.actual").prev().html() + "</li>");
        $(".caja_paginas ul.paginas li a").first().text("<")
    }
    $(".caja_paginas ul.paginas li").last().show();
    $(".caja_paginas ul.paginas").append("<li>" + $(".caja_paginas ul.paginas li.actual").next().html() + "</li>");
    $(".caja_paginas ul.paginas li a").last().text(">")
});

And can be tested/modified here: http://jsfiddle.net/q2WBG/1/

PD: for SEO terms, i would like to keep alllinks to pages in the HTML

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清君侧 2024-12-10 17:22:49

像这样的东西应该有效。

$(document).ready(function(){
    // Remove for in case you want to update it ever with JS
    $('.caja_paginas #ellipsis').remove();
    $('.caja_paginas ul.paginas li').hide();
    $('.caja_paginas ul.paginas li.actual').show();
    $('.caja_paginas ul.paginas li.actual').next('li').show().append('<li id="ellipsis">...</a></li>');
    $('.caja_paginas ul.paginas li.actual').prev('li').show();
    $('.caja_paginas ul.paginas li').last().html('last').show();
});

Something like this should work.

$(document).ready(function(){
    // Remove for in case you want to update it ever with JS
    $('.caja_paginas #ellipsis').remove();
    $('.caja_paginas ul.paginas li').hide();
    $('.caja_paginas ul.paginas li.actual').show();
    $('.caja_paginas ul.paginas li.actual').next('li').show().append('<li id="ellipsis">...</a></li>');
    $('.caja_paginas ul.paginas li.actual').prev('li').show();
    $('.caja_paginas ul.paginas li').last().html('last').show();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文