jqueryをしようして画面幅に応じて動かす画面遷移の幅を変えようとしています。
しかし、以下のコードでは画面が動いてくれません。
クリックファンクションは上記の外側で定義しています。
もしかして、resizeのなかで定義(今回はmoveFunc)はできないのでしょうか?
javascript
1$(window).resize(function(){ 2 var w = $(window).width(); 3 var x = 415; 4 if (w <= x) { 5 $(".qBox").css("width", "300px"); 6 function moveFunc(vol){ 7 var myPos = (vol+1) * -300; 8 $("#qContainer").delay(500).animate({left: myPos},500); 9 }; 10 } else { 11 function moveFunc(vol){ 12 var myPos = (vol+1) * -650; 13 $("#qContainer").delay(500).animate({left: myPos},500); 14 }; 15 } 16}); 17
ちなみに、$(".qBox").css("width", "300px");
はきちんと機能します。
足りない情報などありましたら教えていただきたいです。
どうかご教授の方よろしくお願いいたします????♂️
selectArray = [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]; scoreArray = [0,0,0,0,0,0,0,0,0,0]; qNum = selectArray.length; function quesFunc(){ var idArray = this.id.split("_"); var qID = Number(idArray[0]); var ansID = Number(idArray[1]); var selectID = selectArray[qID]; if (ansID == selectID) return; $("#" + qID + "_" + ansID).addClass("selected") $("#" + qID + "_" + selectID).removeClass("selected"); selectArray[qID] = ansID; moveFuncWide(qID); moveFuncNarrow(qID); scoreArray[qID] = Number($(this).attr("sc")); if (qID + 1 >=qNum) resultFunc(); } function moveFuncWide(vol){ var myPos = (vol+1) * -650; $("#qContainer").delay(500).animate({left: myPos},500); return false; } function moveFuncNarrow(vol){ var myPos = (vol+1) * -300; $("#qContainer").delay(500).animate({left: myPos},500); return false; } // 両方動いてしまっている。条件によって片方だけ動かしたい $(window).resize(function(){ var w = $(window).width(); var x = 415; if (w <= x) { $(".qBox").css("width", "300px"); moveFuncNarrow(); } else { moveFuncWide(); } }); . . . $(function(){ $("ul>li").click(quesFunc); });
アドバイスをいただいたように、moveFuncNarrowとmoveFuncWideを定義したのですが、両方動いてしまいます。
画面幅に応じてどちらか片方を動かしたいです。return文とかなのかなと思ったのですが、うまく使えませんでした...。ご教授いただきたいです。
追記(条件式をquesFunc内でも定義してみました)
javascript
1function quesFunc(){ 2 var idArray = this.id.split("_"); 3 var qID = Number(idArray[0]); 4 var ansID = Number(idArray[1]); 5 6 var selectID = selectArray[qID]; 7 8 if (ansID == selectID) return; 9 10 $("#" + qID + "_" + ansID).addClass("selected") 11 $("#" + qID + "_" + selectID).removeClass("selected"); 12 13 selectArray[qID] = ansID; 14 15 16 $(window).resize(function(){ 17 var w = $(window).width(); 18 var x = 415; 19 if (w <= x) { 20 $(".qBox").css("width", "300px"); 21 moveFuncNarrow(qID); 22 } else { 23 moveFuncWide(qID); 24 } 25 }); 26 27 28 moveFuncNarrow(qID); 29 moveFuncWide(qID); 30 31 scoreArray[qID] = Number($(this).attr("sc")); 32 33 if (qID + 1 >=qNum) resultFunc(); 34 35} 36 37 38 39 40function moveFuncWide(qID){ 41 var myPos = (qID+1) * -650; 42 $("#qContainer").delay(500).animate({left: myPos},500); 43 44 } 45 46function moveFuncNarrow(qID){ 47 48 var myPos = (qID+1) * -300; 49 $("#qContainer").delay(500).animate({left: myPos},500); 50 51 } 52 53// 両方動いてしまっている。条件によって片方だけ動かしたい 54 55 56 $(window).resize(function(){ 57 var w = $(window).width(); 58 var x = 415; 59 if (w <= x) { 60 $(".qBox").css("width", "300px"); 61 moveFuncNarrow(qID); 62 } else { 63 moveFuncWide(qID); 64 } 65 }); 66
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/24 11:20
2019/06/24 11:24
2019/06/24 14:21
2019/06/24 22:33
2019/06/25 02:29
2019/06/25 03:22
2019/06/25 03:29
2019/06/25 03:33
2019/06/25 03:39
2019/06/25 03:42