javascript - jquery分别单击两次事件,一次单击小图如何实现大图?
迷茫
迷茫 2017-04-10 16:40:55
[JavaScript讨论组]

jquery分别单击两次事件,一次单击小图如何实现大图?
二次单击小图如何把大图消失?

 <p class="m-photos">
 <ul class="m-photos-thumb">
    <li src="res/img/product/TB2aAFshpXXXXatXpXXXXXXXXXX_!!0-rate.jpg_400x400.jpg" data-isShown="">
        <img src="res/img/product/a1.jpg">
    </li>
     <li src="res/img/product/TB2aAFshpXXXXatXpXXXXXXXXXX_!!0-rate.jpg_400x400.jpg">
        <img src="res/img/product/a1.jpg">
    </li>
</ul>
    <p class="tm-m-photo-viewer">
        <img src="" alt="" >
    </p>
</p>
    $('.m-photos').on('click', 'li', function(e) {
        var $item = $(this),
            current= $item.addClass("tm-current").siblings().removeClass("tm-current"),
            $parents = $item.parents('.m-photos'),
            $img = $('.tm-m-photo-viewer img', $parents),
            imgSrc = $item.data('src'),
            isShown = $img.data('isShown');

        if (!imgSrc) return ;

        //  已经打开大图
        if (isShown) {
            $img.hide().removeAttr('src').data('isShown', false);
        }
        //  未打开大图
        else {
            //  其实如果想要更好的效果,可以建立一个 <img /> 并插入到
            //  <body /> 里,然后监听 `load` 和 `error` 事件,成功加载
            //  图片则显示,加载失败则给出提示
            $img.show().attr('src', imgSrc).data('isShown', true);
        }
    });

我是新手,表示不理解如何再次单击同样的事件把大图收回去?

天猫的评价下面是怎么做出来了,单击的时候显示大图,再单击就把大图收回去,
然后再单击第二个小图就大图切换到小图的。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
怪我咯
$('.m-photos').on('click', 'li', function(e) {
    var $item = $(this),
        $parents = $item.parents('.m-photos'),
        $img = $('.tm-m-photo-viewer img', $parents),
        imgSrc = $item.data('src'),
        isShown = $img.data('isShown');

    if (!imgSrc) return ;

    //  已经打开大图
    if (isShown) {
        $img.hide().removeAttr('src').data('isShown', false);
    }

    //  未打开大图
    else {

        //  其实如果想要更好的效果,可以建立一个 <img /> 并插入到
        //  <body /> 里,然后监听 `load` 和 `error` 事件,成功加载
        //  图片则显示,加载失败则给出提示
        $img.show().attr('src', imgSrc).data('isShown', true);
    }
});
怪我咯

不用那么麻烦,.toggle()就可以解决你的需求,图片渲染可以在回调函数里处理
.toggle()

给你个参考,这是我写的一个展开更多

$('.more').click(function() {
    $(this).next().toggle();
  })
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号