Ползунок JQuery JCarousel не отображается в IE7

в моем веб-приложении JCarousel изображения загружаются в режиме реального времени. Взгляните на код (я набирал его от руки, мое реальное приложение более сложное, но я надеюсь, что вы уловили основную идею):

<script type="text/javascript">
    /* 
     * Get carousel
     *
     *@param int, start slide index 
     *@param json, images data in jason format
     *
     *@return nothing
    */  
    function showSlider(startSlide,photosJason){

        photosJason = eval(photosJason);

        html = '<ul id="mycarousel">';      

        for(i=0; i < photosJason.length; i++){

            html +=  '<li>' + 

            '<div class="image-title">' + 
                     photosJason[i].name +                        
                    '<div class="image-title-author">'+ photosJason[i].author +'</div>' + 
                '</div>' +
                '<div class="slider-image">' + 
                    '<img src="'+photosJason[i].photo+'" alt="" />' +  
                '</div>' +
              '</li>';      
        }

        html += '</ul>';                      

        $("#carousel-container").html(html); //also used append method instead of html

        $('#mycarousel').jcarousel({
            start: startIndex,
            visible: 1,
            scroll: 1,
            itemFallbackDimension: 800 //this is for IE7, to define the width
        });
    }
</script>

// skipped some php code to get photos data from database and convert it to jason format

<img src="some_img.jpg" alt="Show slider" onclick="showSlider(1,photosJason);" />

<div id="carousel-container"></div>

Он отлично работает во всех основных браузерах, кроме IE7. Похоже, что JCarousel не может найти изображения, динамически загруженные в контейнер. Так просто я не получаю ничего, кроме пустого экрана. Никаких ошибок, просто ничего.

Так что же мне делать? Должен ли я предварительно загружать изображения или что-то в этом роде? Я продолжаю биться головой весь день и до сих пор не понимаю, как заставить его работать в IE7 (IE8 работает нормально).

Я был бы признателен за вашу помощь.


person Bounce    schedule 17.11.2011    source источник


Ответы (1)


Я думаю, что IE7 не может eval вашу строку.

Попробуй это:

photosJason = $.parseJSON(photosJason);

Как выглядит ваш JSON?

person Niels    schedule 17.11.2011
comment
С Json все ок. Я проверил это с помощью $(#carousel-container).html(html); (без вызова класса jcarousel), поэтому я получаю довольно хороший список со всеми данными из json. Я думаю, проблема с JCarousel. - person Bounce; 17.11.2011
comment
Это что-то вроде ответа Ajax, вы делаете это не при загрузке страницы, а после. Проверьте этот URL-адрес snaver.net/2011/ 20 января/применение jcarousel к загруженному контенту ajax - person Niels; 17.11.2011
comment
Спасибо например. На самом деле я не использую Ajax в своей ситуации. Я думаю, что JCarousel в IE7 не находит динамически загружаемые изображения. Потому что, если я помещу свой список каруселей в $(document).ready, а затем вызову JCarousel - он работает как шарм. В моей ситуации я использую JavaScript вместо Ajax. При первой загрузке я беру некоторые данные из php и загружаю их в функцию JavaScript. Можно ли имитировать document.ready в моей функции JavaScript? Или что-то ? - person Bounce; 17.11.2011
comment
В примере, который я разместил (URL-адрес), они используют Ajax, но вы не используете ajax, а загружаете JCarousel после того, как документ готов. Что, если вы поместите $("#carousel-container").html(html) после функции .JCarouse(). - person Niels; 17.11.2011