我正在制作一个页面,其中列出了按年份分列的新闻稿。该页面的下拉列表默认为当前年份,但用户也可以选择上一年。我正在使用带有下拉列表的show / hide来显示所选列表。这部分正在运作。
我还添加了easypagination插件,因此每年只会显示前四个新闻稿,并可选择单击页面底部的“OLDER”链接或页码。问题是只有使用分页的下拉列表中的第一年(在此示例中,自2013年以来的2012年仅有3个新闻稿)。 2012年工作完美,但是如果你去2011年,它可以工作,但是class =“current”永远不会到达
我的问题是如何更改我的代码,以便当用户点击下拉列表时,该函数会识别该操作是否重置并将class =“current”附加到正确的第一个
这是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);
};
};
};