以下のコードを使用して、ページ コンテンツに jQuery フェードイン フェードアウト効果を作成しようとしています。
$(document).ready(function (){
$("#main").click(function(){
$("#content").fadeOut(800, function(){
$("#content").load("main.html", function(){
$("#content").fadeIn(800);
});
});
});
$("#gallery").click(function(){
$("#content").fadeOut(800, function(){
$("#content").load("gallery.html", function(){
$("#content").fadeIn(800);
});
});
});
});
したがって、ユーザーがメイン リンクまたはギャラリー リンクのいずれかをクリックするたびに、古いコンテンツがフェード アウトし、新しいコンテンツがフェード インします。私が直面している問題は、リンクごとに同じコードを何度も繰り返さなければならないことです。そのため、これを単純化するためにループを使用しようとしましたが、機能しません。これが私のコードです:
var p = ["#main","#gallery", "#contact"];
var q = ["main.html", "gallery.html", "contact.html"];
for (i=0;i<=(p.length-1);i++){
$(p[i]).click(function(){
$("#content").fadeOut(500, function(){
$("#content").load(q[i], function(){
$("#content").fadeIn(500);
});
});
});
}
リンクごとに繰り返しスクリプトを書くとうまくいきますが、それらをループで組み合わせるとうまくいきません。FadeOut 効果しか得られず、その後は何も起こりません。
これは非常に単純な問題である場合もあれば、jQuery の奥深い問題である場合もあります。ヒントやヘルプをいただければ幸いです。
TK