【问题标题】:JQuery Image SwapJQuery 图像交换
【发布时间】:2011-12-14 07:32:40
【问题描述】:

我有 6 张图片(3 张全尺寸和 3 张缩略图)并将每个图片 url 加载到 javascript 变量中。在我的页面上,我显示了 3 张图片:一张全尺寸和两张缩略图。当用户单击缩略图时,我希望全尺寸图像显示所单击缩略图的全尺寸版本,而缩略图显示先前全尺寸图像的缩略图版本。

我可以使用下面的脚本让这种情况发生一次。我还可以构建一个巨大的 if/then 块来检查所有情况,但我正在寻找更优雅的东西。有什么想法吗?

谢谢!

    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_one").click(function(){
                        var imageOneFull = "<?php echo $image_one_full;?>";
                        var imageOneCropped = "<?php echo $image_one_cropped;?>";
                        var imageTwoFull = "<?php echo $image_two_full;?>";
                        var imageTwoCropped = "<?php echo $image_two_cropped;?>";
                        var imageThreeFull = "<?php echo $image_three_full;?>";
                        var imageThreeCropped = "<?php echo $image_three_cropped;?>";

                        $('#thumb_one').click($('#main_image').attr("src",imageTwoFull));
                        $('#thumb_one').click($('#thumb_one').attr("src",imageOneCropped));
                    });
                });
            </script>

            <div id="img_header_container">
                <img src="<?php echo $image_one_full;?>" id="main_image"/>
                <img src="<?php echo $image_two_cropped;?>" id="thumb_one"/>
                <img src="<?php echo $image_three_cropped;?>" id="thumb_two"/>
                <div id="heading_text"><h2><?php echo get_the_title($ID) ?></h2><?php echo $page_meta_desc;?></div>
            </div>
        <?php
    }
}

【问题讨论】:

    标签: jquery css


    【解决方案1】:

    我给你两个解决方案。

    1) 使用全部 3 个三个缩略图(我更喜欢)

    HTML:

    <div id="img_header_container">
                <img src="<?php echo $image_one_full;?>" id="main_image"/>
                <img class="thumb" data-main="?php echo $image_one_full;?>" src="<?php echo $image_one_cropped;?>" />
                <img class="thumb" data-main="?php echo $image_two_full;?>" src="<?php echo $image_two_cropped;?>"/>
                <img class="thumb" data-main="?php echo $image_three_full;?>" src="<?php echo $image_three_cropped;?>"/>
     </div>
    

    jquery:

      $(document).ready(function(){
                    $(".thumb").click(function(){
                       $('#main_image').attr("src", $(this).data('main'));
                    });
      });
    

    2) 使用 2 个缩略图(根据要求)

    HTML:

    <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;?>"/>
                <img class="thumb" data-main="?php echo $image_three_full;?>" src="<?php echo $image_three_cropped;?>"/>
     </div>
    

    jquery:

      $(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);
                    });
      });
    

    【讨论】:

    • 是的,这行得通!尽管对于其他使用此功能的人,请不要忘记 data-main=" 之后的开头 "
    • 谢谢!我同意拥有所有缩略图更有意义,但我不是客户。
    【解决方案2】:
    1. 对每个缩略图一视同仁,为它们添加缩略图类
    2. 为每个缩略图添加名为 thumb_image 和 main_image 的属性(不知道这是否是对 html 的正确使用,但它有效)
    3. 单击缩略图时,将 thumb_image 和 main_image 与 #main_image 中的交换(使用 $(this) 的魔力)。
    4. 在主图像上将图像设置为 full_size,在缩略图上设置为 thumb_image

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签