jQuery分页和下拉列表不能一起工作

时间:2013-03-13 20:53:08

标签: jquery pagination

我正在制作一个页面,其中列出了按年份分列的新闻稿。该页面的下拉列表默认为当前年份,但用户也可以选择上一年。我正在使用带有下拉列表的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);
                };
            };
        };
    
  • 0 个答案:

    没有答案