質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

2222閲覧

jsでブレイクポイント分岐かつ、ユーザーエージェントの条件分岐の記述方法

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/01/09 21:52

解決したいことは、jsでブレイクポイントで、タブとアコーディオンを切り替えを実装しているのですが、
PCでウィンドウを縮めた時とユーザーエージェントの記述を合体させたいと考えております。
※理由は、ウィンドウの分岐とユーザーエージェントの分岐を2箇所同じ内容を記載する手間を省きたいため。

ユーザーエージェントは、このままでいいのですが、PCでウィンドウを縮めて戻した時に、
一度、リロードをかまさないと、prependTOが効いたままになってしまい、タブ内の中身が空になってしまうため、リロードは現状必須です。

スマホの時は、タブのコンテンツがアコーディオンの見出しの直下に移動させるため、prependToを使っております。

ご教授いただけますでしょうか。

ウィンドウサイズによる分岐

$(window).on("resize", function() { var tm; clearTimeout(tm); tm = setTimeout(function() { if ($(window).width() < 736) { $('#faq-ttl-tab1-1').prependTo('#faq-cont-tab1-1'); $('#faq-ttl-tab1-2').prependTo('#faq-cont-tab1-2'); $('#faq-ttl-tab1-3').prependTo('#faq-cont-tab1-3'); jQuery('body').css('background', '#ccc'); } else if ($(window).width() < 1023) { location.reload(); } else { // width more than 768px for PC } }, 10); });

ユーザーエージェントによる分岐

// start iphone only if (navigator.userAgent.indexOf('iPhone') > 0 || navigator.userAgent.indexOf('Android') > 0) { $(function() { $('#faq-ttl-tab1-1').prependTo('#faq-cont-tab1-1'); $('#faq-ttl-tab1-2').prependTo('#faq-cont-tab1-2'); $('#faq-ttl-tab1-3').prependTo('#faq-cont-tab1-3'); }); }; // end iphone only
//spアコーディオン $(function() { function demo01() { $(this).next().slideToggle(300); } $(".simple .toggle").click(demo01); function demo02() { $(this).toggleClass("sp-active").next().slideToggle('500'); } $(".switch .toggle").click(demo02); }); // pcタブ $(function() { //クリックしたときのファンクションをまとめて指定 $('.tab-menu-wrap > li').click(function() { //.index()を使いクリックされたタブが何番目かを調べ、 //indexという変数に代入します。 var index = $('.tab-menu-wrap > li').index(this); //コンテンツを一度すべて非表示にし、 $('.tab-content > li').css('display','none'); //クリックされたタブと同じ順番のコンテンツを表示します。 $('.tab-content > li').eq(index).css('display','block'); //一度タブについているクラスselectを消し、 $('.tab-menu-wrap > li').removeClass('select'); //クリックされたタブのみにクラスselectをつけます。 $(this).addClass('select') }); });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2017/01/09 23:30

素朴な疑問ですが、表題の「ブレイクポイント分岐」とは何を指しているのでしょうか。JavaScriptでブレイクポイントといえばデバッガによるブレークポイント設置を想像しますが、そういう事でもないようなので少し気になりました。 http://qiita.com/nekoneko-wanwan/items/02aed17773833c3ad3b2
guest

回答2

0

prependToを行う処理を関数にして、onLoad時に判定すればいいかと思います。
それと、resizeイベントを使用していますが、window.matchMediaという便利なものがあります。

js

1$(function() { 2 var mq = window.matchMedia('max-width: 768px'); 3 var ua = navigator.userAgent; 4 var isMobile = ua.includes('iPhone') || ua.includes('Android') || mq.matches; 5 mq.addListener(function() { 6 menuUpdate(mq.matches); 7 }); 8 menuUpdate(isMobile); 9}); 10 11menuUpdate(isMobile) { 12 var src = isMobile ? '#faq-ttl-tab1-' : '#faq-cont-tab1-'; 13 var dst = isMobile ? '#faq-cont-tab1-' : '#faq-ttl-tab1-'; 14 for(var i = 1; i <= 3; i++ ){ 15 $(src + i).prependTo(dst + i); 16 } 17}

投稿2017/01/10 00:08

編集2017/01/10 00:14
turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/01/10 01:32

ご回答いただきまして、ありがとうございます! window.matchMediaというのがあるんですね。 今から検証してみます!!
退会済みユーザー

退会済みユーザー

2017/01/10 01:38

表題とは、質問がちょっとそれてしまいますが、 以下の3以下を無限例えば30とかにしておくことも可能でしょうか。 ない場合は、エラーではなく、スルーするのような。 for(var i = 1; i <= 3; i++ ){ // 例 menuUpdate(isMobile) { var src = isMobile ? '#faq-ttl-tab1-' : '#faq-cont-tab1-'; var dst = isMobile ? '#faq-cont-tab1-' : '#faq-ttl-tab1-'; var src = isMobile ? '#faq-ttl-tab2-' : '#faq-cont-tab2-'; var dst = isMobile ? '#faq-cont-tab2-' : '#faq-ttl-tab2-'; for(var i = 1; i <= 3; i++ ){ $(src + i).prependTo(dst + i); } }
turbgraphics200

2017/01/10 01:45

jQueryの$()は、設定したセレクタの要素がなかったら実行しても何も処理しないようになってるため、可能かと
退会済みユーザー

退会済みユーザー

2017/01/10 02:17

今、以下のコードで実行したのですが、 値が、prependToされませんでした。 $(function() { var mq = window.matchMedia('max-width: 768px'); var ua = navigator.userAgent; var isMobile = ua.includes('iPhone') || ua.includes('Android') || mq.matches; mq.addListener(function() { menuUpdate(mq.matches); }); menuUpdate(isMobile); }); menuUpdate(isMobile) { var src = isMobile ? '#faq-ttl-tab1-' : '#faq-cont-tab1-'; var dst = isMobile ? '#faq-cont-tab1-' : '#faq-ttl-tab1-'; var src = isMobile ? '#faq-ttl-tab2-' : '#faq-cont-tab2-'; var dst = isMobile ? '#faq-cont-tab2-' : '#faq-ttl-tab2-'; var src = isMobile ? '#faq-ttl-tab3-' : '#faq-cont-tab3-'; var dst = isMobile ? '#faq-cont-tab3-' : '#faq-ttl-tab3-'; var src = isMobile ? '#faq-ttl-tab4-' : '#faq-cont-tab4-'; var dst = isMobile ? '#faq-cont-tab4-' : '#faq-ttl-tab4-'; for(var i = 1; i <= 99; i++ ){ $(src + i).prependTo(dst + i); } }
turbgraphics200

2017/01/10 02:25

それだとsrcとdstという変数を流用してますが、上書きされ最後の'xxx-tab4-'だけゆうこうになってしまうのですが
退会済みユーザー

退会済みユーザー

2017/01/10 02:29

そうなんですね、ありがとうございます! window.matchMediaどんどん使用していきたいと思います! ご教授いただきましてありがとうございます。
guest

0

ベストアンサー

こちらのコードだと実現不可能と理解しました。
ありがとうございました。

投稿2017/01/12 23:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問