1

私は、年ごとに分割されたプレス リリースのリストを含むページに取り組んでいます。このページには、現在の年がデフォルトのドロップダウンがありますが、ユーザーは前の年を選択することもできます。ドロップダウンで表示/非表示を使用して、選択したリストを表示しています。この部分は機能しています。

また、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);
            };
        };
    };
4

0 に答える 0