Проблема с запуском функции jQuery в чужом обратном вызове - PullRequest
1 голос
/ 06 сентября 2011

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

Моя консоль не показывает ошибок ... но функции не выполняются

Закомментированный код работал отлично.

Тестовая площадка:

http://brantley.dhut.ch/

JavaScript:

/*jQuery(function($) {
    $('.z').respond();
});*/

$(document).ready(function() {
    //$('#two, #three, #four').hide();
    //$('#main').fadeIn('slow');

    $('.z').respond(function() {
        $('#two, #three, #four').hide();
        $('#main').fadeIn('slow');
    });

    $('.z').click(function() {
        var slide = $(this);
        slide.fadeOut(600, function() {
            slide.next().fadeIn(600);
            slide.insertAfter('.z:last');
        });
    });
});

Plugin:

(function( $ ){
    $.fn.respond = function() {

        /* initialize function on window load and resize */
        $(document).ready(function() {
            dimensions();
        });
        $(window).load(function() {     
            dimensions();
        });
        $(window).resize(function() {
            dimensions();
        });

        /* declare affected elements */
        var pic = this

        /* set image's height or width depending on the browser window's size */
        function dimensions() {
            return pic.each(function() {

            /* declare variables */
                var browserWidth = $(window).width();
                var imgRatio = $(this).width() / $(this).height()
                var availableHeight = ($(window).height() - $('header').height() - $('footer').height() - 80)
                var browserRatio = browserWidth / availableHeight

                /* image sizing logic */
                if (browserRatio >= imgRatio) {
                    if (browserWidth > 640) {
                        /* if the browser is landscape and bigger than mobile, set the image's height to fill the available space */
                        $(this).height(availableHeight).width('auto');
                        //$('body').css('background', 'blue');
                    } else {
                        /* it's mobile */
                        $(this).width(browserWidth - 40).height('auto');
                        //$('body').css('background', 'red');
                    }
                } else {
                    /* if the browser is portrait, set the image's width to fill the page */
                    $(this).width(browserWidth - 40).height('auto');
                    //$('body').css('background', 'green');
                }

                /* horizontally center content */
                $(this).css('margin-left', (browserWidth - $(this).width())/2);

            });

        };

    };
})( jQuery );

1 Ответ

0 голосов
/ 06 сентября 2011

Ваш плагин не определен как обратный вызов, поэтому ничего не происходит.

изменение: $.fn.respond = function() {

до: $.fn.respond = function(callback) {

и добавьте: callback(); в конце плагина.

...