Проблема JQuery с Internet Explorer - PullRequest
       16

Проблема JQuery с Internet Explorer

1 голос
/ 15 декабря 2011

Я использую JQuery на сайте Wordpress (тема диссертации) для динамического обмена изображениями.В Chrome / Firefox / Safari все работает, как и ожидалось, но в IE изображения не отображаются вообще.Где я ошибся?Код ниже, сайт разработчика на daf.drivechannelcreative.com / о .

    function add_image_header(){
    global $post;

    $image_header = get_post_meta( $post->ID, 'image_header', true );
    $image_one_full = get_post_meta( $post->ID, 'image_one_full', true );
    $image_one_cropped = get_post_meta( $post->ID, 'image_one_cropped', true );
    $image_two_full = get_post_meta( $post->ID, 'image_two_full', true );
    $image_two_cropped = get_post_meta( $post->ID, 'image_two_cropped', true );
    $image_three_full = get_post_meta( $post->ID, 'image_three_full', true );
    $image_three_cropped = get_post_meta( $post->ID, 'image_three_cropped', true );

    $page_meta_desc = get_post_meta( $post->ID, 'thesis_description', true );

    if($image_header){
        ?>  
            <script type="text/javascript">
                $(document).ready(function(){
                $(".thumb").click(function(){
                   var Image1Main = $(this).data('main');
                   var Image1Thumb = $(this).attr('src');

                   var Image2Main = $('#main_image').attr('src');
                   var Image2Thumb = $('#main_image').data('thumb');

                   $('#main_image').attr("src", Image1Main);
                   $('#main_image').data("thumb", Image1Thumb);


                   $(this).attr("src", Image2Thumb);
                   $(this).data("main", Image2Main);
                });
            });
            </script>

            <div id="img_header_container">
                <img data-thumb="<?php echo $image_one_cropped;?>" src="<?php echo $image_one_full;?>" id="main_image"/>
                <img class="thumb" data-main="<?php echo $image_two_full;?>" src="<?php echo $image_two_cropped;?>"/>
                <div id="heading_text"><h2><?php echo get_the_title($ID) ?></h2><?php echo $page_meta_desc;?></div>
                <img class="thumb thumb_two" data-main="<?php echo $image_three_full;?>" src="<?php echo $image_three_cropped;?>"/>
            </div>
        <?php
    }
}
add_action('thesis_hook_before_post_box', 'add_image_header');

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Чтобы установить атрибут "src" с jQuery начиная с версии 1.6, вам нужно использовать ".prop ()", а не ".attr ()":

               $(this).prop("src", Image2Thumb);

Похоже на простую вещь, но этотеперь имеет значение.

Использование ".attr ()" только с одним аргументом для get значение возможно ОК, но даже тогда вам лучше с".prop ()".

edit - Брэд Кристи правильно указывает, что просто:

               this.src = Image2Thumb;

прекрасно работает, когда ваш объект jQuery - это всего лишь один элемент (как в коде выше).Форма jQuery полезна, если вы устанавливаете миллион различных элементов.

0 голосов
/ 15 декабря 2011

Вот как выглядит фрагмент вашего сгенерированного HTML:

<img class="thumb" data-main="http://daf.dev/wp-content/uploads/2011/12/image_two_full_example1.jpg" src="http://daf.dev/wp-content/uploads/2011/12/image_two_crop_example1.jpg"/>

Значение в атрибуте data-main не является рабочим URL-адресом изображения, и это одно из значений, для которых вы собираетесь установить значение .src для тега изображения. Почему-то я не думаю, что вы генерируете правильные URL-адреса, или изображения присутствуют на этих URL-адресах, или эта веб-страница не работает для таких посторонних, как мы (я не уверен, какие именно).

...