1

我使用以下代码通过 CodeIgniter 分页库创建了分页项:

echo $this->pagination->create_links()

一切运作良好。

现在我想通过 ajax 加载数据,我已经完成了 ajax 部分。但问题是制作clicked itemcurrent item安排链接,current item因为它不再是最新的。

假设我有如下分页:

[1] 2 [3] [4] [5] [6] [>] [Last >]

现在 2 是当前项目,4 是单击项目。

我已经检查了CodeIgniter Pagination library,但它没有任何选项来启用或禁用当前页面链接。是否可以在不修改库的情况下获得当前页面链接?

提前致谢。

4

5 回答 5

1

我把它全部收回。分页库将需要更改。

https://github.com/EllisLab/CodeIgniter/blob/develop/system/libraries/Pagination.php

560线

$output .= $this->cur_tag_open.$loop.$this->cur_tag_close

将需要替换为

$append = $this->prefix.$i.$this->suffix;
$output .= $this->num_tag_open.'<a href="'.$this->base_url.$append.'"'.$attributes.$this->_attr_rel('start').'>'.$loop.'</a>'.$this->num_tag_close;

那应该这样做。

于 2013-08-26T09:39:31.333 回答
0

var_dump($this->pagination); everything is inside

then if you check Pagination.php library you have these params available too:

var $cur_tag_open = '';
var $cur_tag_close = '';

so try calling them when initializing pagination

$pagination['cur_tag_open'] = '<span class="current-link">';
$pagination['cur_tag_close'] = '</span>';
$this->pagination->initialize($pagination); //now current link should be wrapped into the <span class="current-link"></span>
于 2013-08-26T17:46:36.357 回答
0

您无需在服务器端修改任何内容。只需使用普通的旧 vanila jquery。

这是如何做到的。

假设我将链接包装在一个<div id="pagination"></div>

  • 现在,要调用 ajax,请使用jQuery(body).on('click','#pagination a', function(e){....}). 在此代码中,jQuery(this)将引用被单击的链接。
  • 接下来,在成功调用后,从所有链接中删除active(或给定的任何其他类) 。喜欢。jQuery('#pagination a').removeClass('active')
  • 接下来,如果你还记得的话,jQuery(this)仍然指的是当前点击的项目。(最好将其保存var current = jQuery(this)在单击的开头,即使引用不会改变。现在,只需添加类。jQuery(current).addClass('active')

你完成了!无需在服务器端做任何花哨的事情。有时客户端就足够了。

PS我忘记了CI如何呈现分页链接。如果您提供链接,我可以编写实际代码。

于 2013-08-26T09:46:36.047 回答
0

我认为您不需要更改分页库中的任何内容。您只需要使用uri_segment()函数。分页库采用如下参数:

$config['uri_segment'] = 5;

默认值为 3。[使用适用于您的 URI 结构的值]。

此变量与 uri_segment() 函数一起用于确定当前页面,在最新版本的 CodeIgniter 2.1.4 中,您会在Pagination.php库的第 142 行找到它。

页面标识符的适当 uri_segment 可以按如下方式计算,如果使用这样的 URI:http ://example.com/controller/function/page/ 20那么您可以按如下方式获取当前页面,

$page = $this->uri_segment(4);

希望有帮助。

于 2013-09-05T15:24:31.623 回答
0

你真的不需要改变任何东西。设置自动页面后

$page = 2 // 页面应该自动设置

现在试试这个

$config["cur_page"] = $page;

于 2016-09-29T18:21:08.010 回答