質問: "https:xxx" + url } ``` この書き方はどうでしょうか? あまりよくないなどの意見があればおっしゃってください。
回答: aの要素をクリックしたらAのページへ画面遷移。 bの要素をクリックしたらBのページへ画面遷移。 「Aの要素をクリックしたら、Bのページへ画面遷移」そのものの一連の流れは共通ですね。 この程度の差なら配列やオブジェクトを使えば共通化できますね。 オブジェクトの配列を作って解決しましょうか。 ``` var link_settings = [ {selector: "#aBtn", url: "/aaa"}, {selector: "#bBtn", url: "/bbb"}, {selector: "#cBtn", url: "/ccc"}, ] link_settings.forEach(function(it) { $(it.selector).on({ 'touchstart': function(e) { // A処理 }, 'touchmove': function(e) { // B処理 }, 'touchend': function(e) { // C処理 toPage(it.url); } }); }); ``` おまけ: 実行したい内容そのものを分岐させる JavaScriptは引数やオブジェクトに関数を持たせられるので、 やりたいことをオブジェクトなんかに持たせておく解決法もあります。 今回はtoUrlを関数を返す関数に作り変えて実装してみました。 仮引数としてpathを記憶させておいて、次の実行で画面遷移するように仕込んであります。 また、cの処理が画面遷移さえすれば良いと解釈してこんな風にしてみました。 過ぎた抽象化は読みづらくなる原因ですが、使いこなせば良いソースコードを書けるようになりますので、色々試してみてください。 ``` var toUrl = function(path) { return function(e) { // C処理 location.href = "https:xxx" + url } } var link_settings = [ {selector: "#aBtn", touchend: toUrl("/aaa")}, {selector: "#bBtn", touchend: toUrl("/bbb")}, {selector: "#cBtn", touchend: toUrl("/ccc")}, ] link_settings.forEach(function(it) { $(it.selector).on({ 'touchstart': function(e) { // A処理 }, 'touchmove': function(e) { // B処理 }, 'touchend': it.touchend }); }); ```