当你有一个标签页面src时,document.ready不会

时间:2011-10-30 13:44:36

标签: jquery ajax jquery-ui

主页是home.jsp,它包含4个标签。我正在使用JSP include src在选项卡2中显示一个图像滑块。问题是单击选项卡2时幻灯片无法按预期工作。图像滑块JSP使用document.ready。当单独查看或在主页中将Tab键顺序指定为1而不是2时,此JSP可以工作。我尝试过很多选项,比如document.window,document.ready。以下是代码。

 $(document).ready(function ()
    {
        //Set Default State of each portfolio piece
        $(".paging").show();
        $(".paging a:first").addClass("active");

    //Get size of images, how many there are, then determin the size of the image reel.
    var imageWidth = $(".window_spot").width();
    var imageSum = $(".image_reel img").size();
    var imageReelWidth = imageWidth * imageSum;


    //Adjust the image reel to its new size
    $(".image_reel").css({'width' : imageReelWidth});

    //Paging + Slider Function
    rotate = function(){    
        var triggerID = $active.attr("rel") - 1; //Get number of times to slide
        var image_reelPosition = triggerID * imageWidth; //Determines the distance the image reel needs to slide

        $(".paging a").removeClass('active'); //Remove all active class
        $active.addClass('active'); //Add active class (the $active is declared in the rotateSwitch function)

        //Slider Animation
        $(".image_reel").animate({ 
            left: -image_reelPosition
        }, 500 );

    }; 

    //Rotation + Timing Event
    rotateSwitch = function(){      
        play = setInterval(function(){ //Set timer - this will repeat itself every 3 seconds
            $active = $('.paging a.active').next();
            if ( $active.length === 0) { //If paging reaches the end...
                $active = $('.paging a:first'); //go back to first
            }
            rotate(); //Trigger the paging and slider function
        }, 7000); //Timer speed in milliseconds (3 seconds)
    };

    rotateSwitch(); //Run function on launch

    //On Hover
    $(".image_reel a").hover(function() {
        clearInterval(play); //Stop the rotation
    }, function() {
        rotateSwitch(); //Resume rotation
    }); 

    //On Click
    $(".paging a").click(function() {   
        $active = $(this); //Activate the clicked paging
        //Reset Timer
        clearInterval(play); //Stop the rotation
        rotate(); //Trigger rotation immediately
        rotateSwitch(); // Resume rotation
        return false; //Prevent browser jump to link anchor
    }); 

});

1 个答案:

答案 0 :(得分:1)

由于您现在已经解释过您正在动态加载选项卡式内容(我假设这意味着通过ajax),因此动态加载的内容不会有新的document.ready()。相反,您需要为加载内容的ajax调用使用成功处理程序,并在加载新内容时触发您要运行的代码。您需要自己触发该代码 - 没有事件可以自动执行。