
Lightbox 2を使用しているのですが、
グループに指定した画像をループさせることは可能でしょうか。
http://lokeshdhakar.com/projects/lightbox2/
1つめの画像の「prev」をクリックで、最後の画像を表示、
最後の画像の「next」をクリックで1つ目の画像を表示させたいです。
javascriptは書かれていることはだいたいわかるのですが、
新規に自分で何かを作ったりカスタマイズしたりするほどの知識がありませんので、
具体的に教えて頂けると有難いです。
お手数ですが、ご存知の方宜しくお願いします。
No.3ベストアンサー
- 回答日時:
jquery.lightbox-0.5.js
/**
* Display the button navigations
*
*/
// _set_navigation関数
function _set_navigation() {
$('#lightbox-nav').show();
// Instead to define this configuration in CSS file, we define here. And its need to IE. Just.
$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({
'background': 'transparent url(' + settings.imageBlank + ') no-repeat'
});
// Show the prev button, if not the first image in set
// グループ化(画像が2以上)
if (settings.imageArray.length > 1) {
if (settings.fixedNavigation) {
$('#lightbox-nav-btnPrev').css({
'background': 'url(' + settings.imageBtnPrev + ') left 15% no-repeat'
}).unbind().bind ('click', function () {
var imageNum = settings.activeImage - 1;
// imageNumループ
if (imageNum < 0) imageNum = settings.imageArray.length - 1;
settings.activeImage = imageNum;
_set_image_to_view();
return false;
});
}
else {
// Show the images button for Next buttons
$('#lightbox-nav-btnPrev').unbind().hover(function () {
$(this).css({
'background': 'url(' + settings.imageBtnPrev + ') left 15% no-repeat'
});
}, function () {
$(this).css ({
'background': 'transparent url(' + settings.imageBlank + ') no-repeat'
});
}).show().bind('click', function () {
var imageNum = settings.activeImage - 1;
// imageNumループ
if (imageNum < 0) imageNum = settings.imageArray.length - 1;
settings.activeImage = imageNum;
_set_image_to_view();
return false;
});
}
}
// Show the next button, if not the last image in set
// グループ化(画像が2以上)
if (settings.imageArray.length > 1) {
if (settings.fixedNavigation) {
$('#lightbox-nav-btnNext').css({
'background': 'url(' + settings.imageBtnNext + ') right 15% no-repeat'
}).unbind().bind('click', function () {
var imageNum = settings.activeImage + 1;
// imageNumループ
if (imageNum > settings.imageArray.length - 1) imageNum = 0;
settings.activeImage = imageNum;
_set_image_to_view();
return false;
});
}
else {
// Show the images button for Next buttons
$('#lightbox-nav-btnNext').unbind().hover(function () {
$(this).css({
'background': 'url(' + settings.imageBtnNext + ') right 15% no-repeat'
});
}, function () {
$(this).css({
'background': 'transparent url(' + settings.imageBlank + ') no-repeat'
});
}).show().bind('click', function () {
var imageNum = settings.activeImage + 1;
// imageNumループ
if (imageNum > settings.imageArray.length - 1) imageNum = 0;
settings.activeImage = imageNum;
_set_image_to_view();
return false;
});
}
}
// Enable keyboard navigation
_enable_keyboard_navigation ();
}
// _set_navigation関数ここまで
_set_navigation関数を書き換えて下さい。
やってることは No.1 と同じです。
グループ化されていれば「prev」「next」を常に表示させ
imageNum(添え字)をimageArrayの範囲内でループさせてます。
※ 適当にやってますから、クライアントからクレームが来ないよう、十分注意して下さい。
No.2
- 回答日時:
No.1の「startフラグを置いた制御」は必要なかったかもです。
ありがとうございます!
無事解決出来て喜んでいたのですが…
クライアント様より、
下記のjQueryのものに変更しろと言われてしまいまして…。
http://leandrovieira.com/projects/jquery/lightbox/
せっかくご回答いただいたのに、大変申し訳ございません。
もし、ご面倒でなければ、改めてご享受願えませんでしょうか。
宜しくお願いいたします。
No.1
- 回答日時:
Lightboxを起動するstartメソッド。
画像を変更するchangeImageメソッド。「prev」「next」の表示を制御しているupdateNavメソッドの3つを書き換えます。
start: function(imageLink) {
// startフラグ
this.startPhase = true;
$$('select', 'object', 'embed')...
...
}
changeImage: function(imageNum) {
var length = this.imageArray.length;
// imageNumループ
if (!this.startPhase) {
if (imageNum > length - 1) imageNum = 0;
else if (imageNum < 0) imageNum = length - 1;
}
else this.startPhase = false;
this.activeImage=imageNum;//updateglobalvar
...
}
updateNav: function() {
this.hoverNav.show();
// グループ化(画像が2以上)
if (this.imageArray.length > 1) {
this.prevLink.show();
this.nextLink.show();
}
this.enableKeyboardNav();
}
changeImageメソッドはstartメソッドでも呼ばれるので、フラグを置きます。
changeImageメソッドの引数imageNumが画像リストの添え字にあたりますから
startメソッドでの呼出しでなければ、imageArrayの範囲内でループさせます。
updateNavメソッドの方は、グループ化されていれば「prev」「next」を常に表示させます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
コマンドプロンプト実行後に画...
-
ODBCでMoveNextがうまく動作し...
-
(String args[])というメッソ...
-
JSPで<SELECT>の中にDBから持っ...
-
0歳児の指しゃぶりに関して
-
EXCEL VBAの構造体検索について
-
引数で日付を2つ与え、その間の...
-
StrGrdIOのSaveToFileメソッド...
-
CALLされていないメソッドを見...
-
DBunitの期待値についての質問...
-
オーバーロードの「あいまい」...
-
vbaエクセルマクロ RemoveDupli...
-
変数名の付け方
-
(vba)他のアプリケーションの右...
-
複数の変数を宣言する時、同時...
-
PHPExcel使用で2枚目のシートを...
-
vb.netでFAXを送信する方法
-
オブジェクトレベルとメタレベル
-
恋愛
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
配列のメソッド
-
mainメソッドのthrows節で設定...
-
final修飾子を使っているのに、...
-
0歳児の指しゃぶりに関して
-
javascriptからjavaを呼び出したい
-
DataGridViewでセルクリックイ...
-
JSPで<SELECT>の中にDBから持っ...
-
boolean型のフィールドとゲッタ...
-
Labelコントロールに数字を代入...
-
ウィンドウを最前面にできません
-
処理内容がほぼ同じメソッドの...
-
eclipse-Tomcatでのデバッグに...
-
CALLされていないメソッドを見...
-
FEM解析の読み方は?
-
エクセルVBAにおけるON TIMEメ...
-
Application.Wait の参照設定
-
コマンドプロンプト実行後に画...
-
VBA コピーが出来ません…!
-
drawStringで文字間隔の調整
おすすめ情報