jquery分别单击两次事件,一次单击小图如何实现大图?
二次单击小图如何把大图消失?
<div class="m-photos">
<ul class="m-photos-thumb">
<li data-src="res/img/product/TB2aAFshpXXXXatXpXXXXXXXXXX_!!0-rate.jpg_400x400.jpg" data-isShown="">
<img src="res/img/product/a1.jpg">
</li>
<li data-src="res/img/product/TB2aAFshpXXXXatXpXXXXXXXXXX_!!0-rate.jpg_400x400.jpg">
<img src="res/img/product/a1.jpg">
</li>
</ul>
<div class="tm-m-photo-viewer">
<img src="" alt="" >
</div>
</div>
$('.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);
}
});
我是新手,表示不理解如何再次单击同样的事件把大图收回去?
天猫的评价下面是怎么做出来了,单击的时候显示大图,再单击就把大图收回去,
然后再单击第二个小图就大图切换到小图的。
不用那么麻烦,.toggle()
就可以解决你的需求,图片渲染可以在回调函数里处理
.toggle()
给你个参考,这是我写的一个展开更多
$('.more').click(function() {
$(this).next().toggle();
})
$('.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);
}
});