2

だから私は別の .html から ajax を使用してコンテナーにコンテンツをロードするこの Web サイトを持っています。私が直面している問題は、"mosaic.js" というスクリプトを使用するギャラリーで読み込まれたコンテンツが機能しないことです。奇妙なことに、getScript は別のスクリプトでも機能します。

これは、コンテンツの置き換えに使用したスクリプトです。

http://net.tutsplus.com/tutorials/javascript-ajax/how-to-load-in-and-animate-content-with-jquery/

$(document).ready(function() {

var hash = window.location.hash.substr(1); var href = $('#nav a').each(function(){ var href = $(this).attr('href'); if(hash==href.substr(0,href.length-4)){  var toLoad = hash+'.php #projectcontainer4';  $('#projectcontainer4').load(toLoad) }    });

$('#nav a').live('click', function () {

var toLoad = $(this).attr('href')+' #projectcontainer4'; $('#projectcontainer4').hide('fast',loadContent); $('#load').remove(); $('#wrapper').append('LOADING...'); $('#load').fadeIn('normal'); window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-4);

$('#projectcontainer4').empty();

function loadContent() { $('#projectcontainer4').load(toLoad,'',showNewContent)  } 

function showNewContent() {      $.getScript("mosaic.js"); $('#projectcontainer4').show('normal',hideLoader()); }

function hideLoader() { $('#load').fadeOut('normal');


$('html, body').animate({scrollTop : 200},800);


}

return false;   

});

});

これはロードされたコンテンツで動作しないスクリプトです

(function($){

    if(!$.omr){
        $.omr = new Object();
    };

    $.omr.mosaic = function(el, options){

        var base = this;

        // Access to jQuery and DOM versions of element
        base.$el = $(el);
        base.el = el;

        // Add a reverse reference to the DOM object
        base.$el.data("omr.mosaic", base);

        base.init = function(){
            base.options = $.extend({},$.omr.mosaic.defaultOptions, options);

            base.load_box();
        };

        // Preload Images
        base.load_box = function(){
            // Hide until window loaded, then fade in           if (base.options.preload){
                $(base.options.backdrop, base.el).hide();
                $(base.options.overlay, base.el).hide();

                $(window).load(function(){
                    // IE transparency fade fix
                    if(base.options.options.animation == 'fade' && $(base.options.overlay, base.el).css('opacity') == 0 ) $(base.options.overlay, base.el).css('filter', 'alpha(opacity=0)');

                    $(base.options.overlay, base.el).fadeIn(200, function(){
                        $(base.options.backdrop, base.el).fadeIn(200);
                    });

                    base.allow_hover();
                });             }else{
                $(base.options.backdrop, base.el).show();
                $(base.options.overlay , base.el).show();
                base.allow_hover();             }
        };

        // Initialize hover animations
        base.allow_hover = function(){
            // Select animation             switch(base.options.animation){

                // Handle fade animations
                case 'fade':
                    $(base.el).hover(function () {
                        $(base.options.overlay, base.el).stop().fadeTo(base.options.speed, base.options.opacity);
                    },function () {
                        $(base.options.overlay, base.el).stop().fadeTo(base.options.speed, 0);
                    });

                    break;

                // Handle slide animations
                case 'slide':
                    // Grab default overlay x,y position
                    startX = $(base.options.overlay, base.el).css(base.options.anchor_x) != 'auto' ? $(base.options.overlay, base.el).css(base.options.anchor_x) : '0px';
                    startY = $(base.options.overlay, base.el).css(base.options.anchor_y) != 'auto' ? $(base.options.overlay, base.el).css(base.options.anchor_y) : '0px';;

                    var hoverState = {};
                    hoverState[base.options.anchor_x] = base.options.hover_x;
                    hoverState[base.options.anchor_y] = base.options.hover_y;

                    var endState = {};
                    endState[base.options.anchor_x] = startX;
                    endState[base.options.anchor_y] = startY;

                    $(base.el).hover(function () {
                        $(base.options.overlay, base.el).stop().animate(hoverState, base.options.speed);
                    },function () {
                        $(base.options.overlay, base.el).stop().animate(endState, base.options.speed);
                    });

                    break;          };
        };

        // Make it go!
        base.init();
    };

    $.omr.mosaic.defaultOptions = {
        animation   : 'fade',
        speed       : 150,
        opacity     : 1,
        preload     : 0,
        anchor_x    : 'left',
        anchor_y    : 'bottom',
        hover_x     : '0px',
        hover_y     : '67px',
        overlay     : '.mosaic-overlay',    //Mosaic overlay        backdrop    : '.mosaic-backdrop'    //Mosaic backdrop
    };

    $.fn.mosaic = function(options){
        return this.each(function(){
            (new $.omr.mosaic(this, options));
        });
    };
     })(jQuery);

これは、同じ方法でロードしたときに実際に機能するスクリプトです。

// JavaScript Document

$('.ppt li:gt(0)').hide(); $('.ppt li:last').addClass('last'); $('.ppt li:first').addClass('first'); $('#play').hide();

var cur = $('.ppt li:first'); var interval;

$('#fwd').click( function() {   goFwd();    showPause(); } );

$('#back').click( function() {  goBack();   showPause(); } );





function goFwd() {  stop();     forward();  start(); }

function goBack() {     stop();     back();     start(); }

function back() {   cur.fadeOut( 500 );     if ( cur.attr('class') == 'first' )         cur = $('.ppt li:last');    else        cur = cur.prev();   cur.fadeIn( 500 );}function forward() {cur.fadeOut( 500 );if ( cur.attr('class') == 'last' )cur = $('.ppt li:first');else cur = cur.next();cur.fadeIn( 500 );}function showPause() {$('#play').hide();$('#stop').show();}function showPlay() {$('#stop').hide();$('#play').show();}function stop() {clearInterval( interval );}$(function() {start();} );
4

0 に答える 0