関数に変数を代入して、繰り返し使いたい。
jqueryでアニメーションをまとめた関数を繰り返し使いつつ、その関数に代入する変数を変えたい。超初心者です。申し訳ないです。
[例]
i = 1; function(){ $('li要素#id'+i).animate({'opacity': 1}, 1200); /*など処理色々*/ } //この関数が終わってから、 i = 2; function(){ $('li要素#id'+i).animate({'opacity': 1}, 1200); /*など処理色々。i=1と同じ関数*/ } //この関数が終わってから、 i = 3; function(){ $('li要素#id'+i).animate({'opacity': 1}, 1200); /*など処理色々。i=1と同じ関数*/ } ...という風な感じです。
試したこと
for文の繰り返しだと一瞬でi=3まで行ってしまい、0で代入して処理して欲しい関数をすっ飛ばしてしまいます。
setTimeoutを使っても、もちろん時間通りには繰り返してくれるのですが、代入ができなくなってしまうようです。
変数iを配列に入れて.each()でできるかなとも思いましたが、単体のli要素を処理する方法しか見つかりませんでした。でも関数でまとめたいので。
Deferredオブジェクトもダメ元でトライしてみましたが、何のエラーメッセージも無いけれど、1ミリも動きません。
//修正・加筆1
ご指摘ありがとうございます。関数そのままの方が良いとのことなので、そのままベタっと貼ってみました。下記が関数です。
$(function(){ //スクロール $('div.mouseon_scroll_slide').mouseover(function(){ $('div.mouseon_scroll_slide').delay(800).animate({'left': '-1950px'}, 44333); //1区分 }); $('li#mp'+i+'.main_bg_photo img').animate({'opacity': 1}, 2500); $('div#id_'+i+'.mouseon_scroll_slide').on('mouseover', age_and_text); function age_and_text(){ $('li#lt'+i+'.life_text').fadeIn(800); $('li#la'+i+'.life_age').delay(600).fadeIn(800); }; $('div.history_b').on('mouseover', main_photos); function main_photos(){ $('li#lmp'+i+'.life_main_photos').animate({'opacity': 1}, 1000); $('li#lmpc'+i+'.life_main_photos_comments').fadeIn(); $('li#lmpc'+i+'.life_main_photos_comments').animate({'top': '-190px', 'opacity': 1}, 1000); }; $('div.history_c').on('mouseover', snap123); function snap123(){ $('li#p'+i+'.social_snap_photos1').animate({'opacity': 1}, 1000); $('li#c'+i+'.social_snap_comments1').fadeIn(); $('li#c'+i+'.social_snap_comments1').animate({'top': '3px', 'opacity': 1}, 1200); //3pxは停止場所 $('li#p'+i+'.social_snap_photos2').animate({'opacity': 1}, 2000); $('li#c'+i+'.social_snap_comments2').fadeIn(); $('li#c'+i+'.social_snap_comments2').animate({'top': '3px', 'opacity': 1}, 1600); //3pxは停止場所 $('li#p'+i+'.social_snap_photos3').animate({'opacity': 1}, 3000); $('li#c'+i+'.social_snap_comments3').fadeIn(); $('li#c'+i+'.social_snap_comments3').animate({'top': '3px', 'opacity': 1}, 2000); //3pxは停止場所 }; $('div.history_f').on('mouseover', snap4); function snap4(){ $('li#p'+i+'.social_snap_photos4').animate({'opacity': 1}, 1000); $('li#c'+i+'.social_snap_comments4').fadeIn(); $('li#c'+i+'.social_snap_comments4').animate({'top': '-110px', 'opacity': 1}, 1200); //3pxは停止場所 }; }); });
この関数に変数を代入し、この関数の処理が終わってから、同じ関数にi++を代入したいのです。
スクロールは関数から外してしまうこともできますが、取り敢えず組み込んであります。
回答3件
あなたの回答
tips
プレビュー