.next не определен, проблема с плагином jquery - PullRequest
1 голос
/ 20 апреля 2010

Я пытаюсь создать свой собственный плагин. Но у меня проблемы с получением правильных вещей. Похоже, когда я пытаюсь пройти внутрь. Все происходит не так.

Я пытаюсь перейти к следующему пункту каждые 6 секунд, исчезая.

jQuery(function($){
    $.fn.rotator = function(options){
        this.each(function() {
            var container = $(this);
            var images = container.children();
            //Set the opacity of all images to 0
            images.css({opacity: 0.0});

            //Get the first image and display it (gets set to full opacity)
            $('div:first',this).css({opacity: 1.0}).addClass('show');

            //Call the rotator function to run the slideshow, 6000 = change to next image after 6 seconds
            var obj = $(this);
            setInterval(nextimage(obj),6000);

        }); 
    };
    // rotate function
    function nextimage(obj) {
        var container = $(obj);
        var images = container.children();
        //Get the current image
        var current = (images.hasClass('show')?  images.hasClass('show') : images.first());

        //Get next image, when it reaches the end, rotate it back to the first image
        var next = ((current.next().length) ? ((current.next().hasClass('show')) ? images.first() :current.next()) : images.first());   

        //Set the fade in effect for the next image, the show class has higher z-index
        next.css({opacity: 0.0})
        .addClass('show')
        .animate({opacity: 1.0}, 1000);

        //Hide the current image
        current.animate({opacity: 0.0}, 1000)
        .removeClass('show');
    };
});

$(document).ready(function(){

    $("#bg").rotator({
    })
});

Я получаю ошибку: current.next не является функцией Линия 35

Строка 35 =

var next = ((current.next().length) ? ((current.next().hasClass('show')) ? images.first() :current.next()) : images.first());

Может кто-нибудь сказать мне, что я делаю не так?

1 Ответ

1 голос
/ 20 апреля 2010

В строке 31:

var current = (images.hasClass('show')?  images.hasClass('show') : images.first());

current получает либо логический, либо jQuery-объект. Я предполагаю, что ошибка возникает, когда current получает логическое значение (вызванное возвращением нуля current.next().length). .next() - это метод jQuery, его нельзя вызывать для логического значения.

...