このサイトで問題が発生しています: http://metro-structure.com
それは他の誰かによって設計/開発されたものであり、私はそこに来てこれらの問題を解決するのを手伝うように頼まれました. 問題は、私が JS の開発に慣れていないため、完全に道に迷ってしまうことです。何が起こっているかは次のとおりです。
ロード時に表示されるギャラリーの「ビデオ」サムネイルをクリックすると、ビデオがポップアップ表示されます。完全。「magnolia 2」をクリックしてから、「video」のサムネイルをクリックしてみてください。動画はありません、画像のみです。別のリストをクリックしてから「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で確認できます。
これを整理するために使用できるアドバイスや指針をいただければ幸いです。本当にありがとう!