我在这个网站上遇到了一些问题:http: //metro-structure.com
它是由其他人设计/开发的,我被要求进来帮助解决这些问题。问题是,我在 JS 开发方面达不到标准,所以我完全迷路了。这是发生了什么:
如果您单击加载时显示的画廊的“视频”缩略图,则会弹出一个视频。完美的。现在尝试单击“magnolia 2”,然后单击“视频”缩略图。没有视频,只有图片。如果您单击另一个列表,然后返回“magnolia 2”,则视频会正常显示。
现在,如果您单击其他没有视频的画廊的最后一个缩略图,它仍然会尝试拉出不存在的视频,当然会导致错误消息。
我相信下面的 JS 基本上是告诉浏览器拉出一个视频,如果一个视频托管在服务器上相应的“/videos/”文件夹中。我已经三重检查并确保文件结构是完美的,所以这不是问题:
以下是画廊的参数:
controllers.Gallery = {
cfg: {
path: './gallery/',
max: 12,
duration: 300,
video: {
width: 640,
height: 480
},
dir: {
sm: '/Thumbs/',
med: '/228x150/',
lrg: '/600x400/',
video: '/video/'
}
},
这是我认为有缺陷的代码:
load: function ($set, gallery) {
var _this = this;
_this.$sets.removeClass('active');
$set.addClass('active');
if (!_this.$thumbs.find('.' + gallery).length > 0) {
var $ul = $('<ul class="' + gallery + ' clear"></ul>').appendTo(_this.$thumbs);
for (var i = 1, j = _this.cfg.max; i <= j; i++) {
$('<li><img src="' + _this.cfg.path + gallery + _this.cfg.dir.sm + i + '.jpg' + '"></li>').on('click', function () {
var $this = $(this);
if ($this.hasClass('video')) {
_this.showVideo($this);
} else { _this.showThumb($this); }
}).attr({
'data-med-src': _this.cfg.path + gallery + _this.cfg.dir.med + i + '.jpg',
'data-lrg-src': _this.cfg.path + gallery + _this.cfg.dir.lrg + i + '.jpg'
}).appendTo($ul);
}
}
_this.cleanup(_this.$thumbs.find('.' + gallery + ' li'));
_this.$thumbs.find('.' + gallery + ' li:last').attr({
'data-video-src': _this.cfg.path + gallery + _this.cfg.dir.video + gallery
}).addClass('video');
_this.$thumbs.find('ul').hide().removeClass('active');
_this.$thumbs.find('.' + gallery).show().addClass('active');
_this.showThumb(_this.$thumbs.find('.active li:first'));
},
完整的 .js 文件可以在这里看到:http: //metro-structure.com/js/base.js
我很感激我可以用来对此进行排序的任何建议或指示。非常感谢!