現在HTML,Javascript(jQuery)を使ってアプリを作っています。
jQueryでボタンタップ時に画面遷移する処理を作っているのですが、うまくメソッドにまとめることができません。
そのリファクタリング方法を教えていただきたいです。
処理は以下です。
javascript
1$("#aBtn").on({ 2 'touchstart': function(e) { 3 // A処理 4 }, 5 'touchmove': function(e) { 6 // B処理 7 }, 8 'touchend': function(e) { 9 // C処理 10 toPage("/aaa"); 11 } 12 }); 13$("#bBtn").on({ 14 'touchstart': function(e) { 15 // A処理 16 }, 17 'touchmove': function(e) { 18 // B処理 19 }, 20 'touchend': function(e) { 21 // C処理 22 toPage("/bbb"); 23 } 24 }); 25$("#cBtn").on({ 26 'touchstart': function(e) { 27 // A処理 28 }, 29 'touchmove': function(e) { 30 // B処理 31 }, 32 'touchend': function(e) { 33 // C処理 34 toPage("/ccc"); 35 } 36 }); 37 38function toPage(url){ 39 // D処理 40 location.href = "https:xxx" + url 41}
タップ処理の対応をするとすごくひとつの処理が長くなってしまします。
行っている内容はtouchmoveが発生した時にタップをキャンセルするといった対応です。
もし分かる方がいればよろしくお願いいたします。
追記
元々の投稿本文を修正しました。
どのボタンタップ時も
toPage("/ccc");
になっていたので、
それぞれの遷移先へいくように修正しました。
aボタンタップ時 toPage("/ccc"); → toPage("/aaa");
bボタンタップ時 toPage("/ccc"); → toPage("/bbb");
追記2
アドバイスでいただいたswitch文を使う方法はイメージできたので記載してみます。
javascript
1$("#aBtn,#bBtn,#cBtn").on({ 2 'touchstart': function(e) { 3 // A処理 4 }, 5 'touchmove': function(e) { 6 // B処理 7 }, 8 'touchend': function(e) { 9 // C処理 10 var id = var id = $(this).attr("id"); 11 switch(id){ 12 case "aBtn": 13 toPage("/aaa"); 14 break; 15 case "bBtn": 16 toPage("/bbb"); 17 break; 18 case "cBtn": 19 toPage("/ccc"); 20 break; 21 } 22 } 23 }); 24 25function toPage(url){ 26 // D処理 27 location.href = "https:xxx" + url 28}
この書き方はどうでしょうか?
あまりよくないなどの意見があればおっしゃってください。
回答3件
あなたの回答
tips
プレビュー