使用jQuery再现谷歌图像查看器
Reproducing Google image viewer with jQuery
我正在尝试在我的项目中模拟谷歌图像预览。我想我差不多到了,但有几件事我很难实现。
因此,图像查看器应该执行以下操作:
-
单击缩略图将在右侧打开预览面板在下面,关闭另一行的另一个预览面板。关闭其他面板和打开当前面板需要幻灯片转换。
-
单击相同的缩略图将关闭预览面板。
-
单击"X"也将关闭预览面板。
-
打开同一行的另一个缩略图不会执行任何打开/关闭操作,只会交换内容。
到目前为止,我的成就是:
- 正在部分工作,因为它只会为第一个预览面板,不会使用幻灯片切换打开/关闭不再我不确定其他小组是如何结束的——我还没有任何实现
- 我无法在所有其他条件下一起工作。我试着使用触发缩略图的id,并将该id分配给预览面板,然后如果它们匹配,关闭预览面板,但它会同时打开/关闭,这不是我想要的点击切换
- 工作正常
- 工作正常,尽管我不能100%确定我使用oldIndex的方法
这是JS Fiddle,供您使用,包含以下脚本。
$.videoWatch = function(element) {
this.$element = $(element);
this.init();
};
var oldIndex = -1;
$.videoWatch.prototype = {
init: function() {
this.$openLinks = this.$element.find(".open");
this.$closeLinks = this.$element.find(".close");
this.open();
this.close();
},
_getContent: function(element) {
var $parent = element.parent(),
title = $parent.data('title');
return {
title: title
}
},
open: function() {
var self = this;
self.$openLinks.on("click", function(e) {
e.preventDefault();
var $a = $(this),
content = self._getContent($a),
$li = $a.parents("li"),
$title = $(".title");
$title.text(content.title);
$li.append($(".preview"));
var $preview = $li.find(".preview");
if (!($li.index() == oldIndex)) {
$preview.slideDown('fast');
oldIndex = $li.index();
}
});
},
close: function() {
this.$closeLinks.on("click", function(e) {
e.preventDefault();
$(this).parent().slideUp('fast');
oldIndex = -1;
});
}
};
$(function() {
var watch = new $.videoWatch("ul");
});
很好的演示,但我不确定你的问题是什么。正如你所说的,你对如何完成#1和#2 的期望是不清楚的
请看https://jsfiddle.net/mouseoctopus/7ryfLu68/用于工作演示
为了完成#1,在显示之前重新隐藏第一个预览
if (!($li.index() == oldIndex)) {
$preview.hide(); // add this line
$preview.slideDown('fast');
为了完成#2,不确定如何在没有hax的情况下进行,必须存储图形id,并在单击同一图形时隐藏,然后在id不同时重新显示
else{
var figureId = $a.parent()[0].id;
if ( oldFigureId == figureId ){
$preview.slideUp('fast');
oldFigureId = -1;
}else{
$preview.slideDown('fast');
oldFigureId = figureId;
}
}
我也不确定有oldIndex、oldFigureId等的hax,它不干净。
1-您的附加和滑动代码:
if (!($li.index() == oldIndex)) {
$(".preview").slideUp('fast', function(){
$li.append($(".preview"));
var $preview = $li.find(".preview");
$preview.slideDown('fast');
oldIndex = $li.index();
});
} else {
$li.append($(".preview"));
}
2-你可以存储当前的拇指id,并在做任何事情之前检查它是否打开,如果是,关闭它
if (curID == $(this).parent().attr("id")) {
$(".preview").slideUp('fast');
oldIndex = -1;
curID = "";
return false;
} else {
curID = $(this).parent().attr("id");
}
更新的FIDDLE
相关文章:
- 如何在谷歌字体加载时显示加载图像
- 强制谷歌为javascript背景图像编制索引
- 将谷歌地图中的平移边界设置为图像覆盖
- 如何获取显示在谷歌搜索右侧的图像链接
- 谷歌地图加载后隐藏加载图像
- 如何使用谷歌应用程序脚本从电子邮件中提取内联文件/图像
- 谷歌浏览器控制台,打印图像
- 加载、滚动、放大和缩小图像,如谷歌地图
- 如何创建谷歌图像引擎效果
- 创建谷歌图表;转换为图像服务器端
- 如何从Node中的图像url将图像上传到谷歌云存储
- 当点击按钮时,谷歌图表转换为图像
- 谷歌地球Api改变图像对比度
- 角度谷歌地图:将图像放在信息窗口
- 谷歌地图和谷歌地点库中不同地点类型的不同图像
- 如何在谷歌图像搜索api v2中获取图像url
- 谷歌图书预览没有在安全的https上显示图书图像链接,但在http上工作.在Google Chrome和Touch浏览器
- 如何使用Api v3在谷歌地图上放置图像
- 动态画布大地图像谷歌地图
- 如何创建未预定义的多图像谷歌地图标记阵列