document.ready не работает, когда у вас есть вкладка, страница src

#jquery #ajax #jquery-ui

#jquery #ajax #jquery-пользовательский интерфейс

Вопрос:

Домашняя страница home.jsp содержит 4 вкладки. Я отображаю слайдер изображения на вкладке 2, используя JSP, включая src. Проблема в том, что слайд не работает должным образом при нажатии на вкладку 2. Ползунок изображения JSP использует document.ready. Этот JSP работает, когда он просматривается отдельно или когда порядок вкладок указан как 1 вместо 2 на главной странице. Я перепробовал много вариантов, таких как 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. Являются ли ваши вкладки новыми страницами (загружают совершенно новый URL-адрес с нуля) или просто другим представлением того же содержимого? Только загрузка нового URL-адреса вызывает document.ready() запуск нового.

2. Каждая вкладка динамически загружает страницу JSP, и вся настройка вкладки выполняется в одном JSP (homeinc.jsp). Какие-либо другие обходные пути? Спасибо за ваш ответ

Ответ №1:

Поскольку вы теперь объяснили, что загружаете содержимое с вкладками динамически (что, я полагаю, означает через ajax), document.ready() для этого динамически загружаемого содержимого не будет ничего нового. Вместо этого вам нужно использовать обработчик успеха для вызова ajax, который загружает содержимое и запускает код, который вы хотите запустить при загрузке нового содержимого. Вам нужно будет запустить этот код самостоятельно — нет события, чтобы сделать это автоматически.

Комментарии:

1. Спасибо за объяснение, можете ли вы дать мне пример или пример кода для этого. Я могу использовать этот код в функции щелчка по вкладке. Спасибо

2. Нужно ли мне использовать функцию загрузки для вкладок? Можете ли вы дать мне пример, я новичок в jquery. Что-то вроде того, когда я нажимаю вкладку, страница загружается с помощью ползунка изображения. Возможно ли это?

3. Покажите нам код, который загружает содержимое вкладки, и мы сможем предложить лучшие идеи.

4. Ниже приведен код, который загружает файлы для каждой вкладки, используя include SRC. <dsp:oparam name=»false»> <dsp:setvalue param=»subtabNames» paramvalue=»element.subtabNames»/> <c:set var=»_jspPage»><dsp:valueof param=»element.jspPageUrl»/></c:set> <dsp:включить src=»${_jspPage}» />/* это место, где вкладки загружаются с помощью JSP */ </dsp:oparam> Слайдер изображения — это JSP, где он имеет вышеупомянутый Javascript и собственный CSS. Одна из вещей, которые я обнаружил, когда вкладка находится в позиции 1 (выбрана), она работает

5. Я перепробовал так много типов слайдеров изображений, ни один из них не работает, когда он встроен во вкладку. Это должна быть глобальная ошибка или, возможно, есть идеи получше.