私は、年ごとに分割されたプレス リリースのリストを含むページに取り組んでいます。このページには、現在の年がデフォルトのドロップダウンがありますが、ユーザーは前の年を選択することもできます。ドロップダウンで表示/非表示を使用して、選択したリストを表示しています。この部分は機能しています。
また、easypagination プラグインも追加しました。これにより、毎年、最初の 4 つのプレス リリースのみが表示され、ページの下部にある [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);
};
};
};