我正在处理一个页面,其中包含按年份划分的新闻稿列表。该页面有一个默认为当前年份的下拉菜单,但用户也可以选择前一年。我正在使用带有下拉菜单的显示/隐藏来显示所选列表。这部分正在工作。
我还添加了 easypagination 插件,因此每年只显示前四篇新闻稿,并可选择点击页面底部的“OLDER”链接或页码。问题是只有从使用分页的下拉列表中的第一年(在这个例子中,自 2013 年以来的 2012 年只有 3 个新闻稿)。2012 完美运行,但如果你转到 2011,它可以运行,但 class="current" 永远不会到达那个‹li›,并且当前的底部页码永远不会突出显示。
我的问题是如何更改我的代码,以便当用户点击下拉菜单时,函数会识别出操作重置并将 class="current" 附加到正确的第一个‹li›?
这是 JSFiddle http://jsfiddle.net/brianjschneider/GjXJR/
任何帮助将不胜感激!我认为问题/解决方案在这个函数的某个地方:
$.fn.easyPaginate = function (options) {
var defaults = {
step: 4,
delay: 0,
numeric: true,
nextprev: true,
auto: false,
loop: false,
pause: 10000,
clickstop: true,
controls: 'pagination',
current: 'current',
randomstart: false
};
var options = $.extend(defaults, options);
var step = options.step;
var lower, upper;
var children = $(this).children();
var count = children.length;
var obj, next, prev;
var pages = Math.floor(count / step);
var page = (options.randomstart) ? Math.floor(Math.random() * pages) + 1 : 1;
var timeout;
var clicked = false;
function show() {
clearTimeout(timeout);
lower = ((page - 1) * step);
upper = lower + step;
$(children).each(function (i) {
var child = $(this);
child.hide();
if (i >= lower && i < upper) {
setTimeout(function () {
child.fadeIn('fast')
}, (i - (Math.floor(i / step) * step)) * options.delay);
}
if (options.nextprev) {
if (upper >= count) {
next.fadeOut('fast');
} else {
next.fadeIn('fast');
};
if (lower >= 1) {
prev.fadeIn('fast');
} else {
prev.fadeOut('fast');
};
};
});
$('li', '#' + options.controls).removeClass(options.current);
$('li[data-index="' + page + '"]', '#' + options.controls).addClass(options.current);
if (options.auto) {
if (options.clickstop && clicked) {} else {
timeout = setTimeout(auto, options.pause);
};
};
};