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

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

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

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

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

jQuery

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

Q&A

解決済

3回答

2326閲覧

レスポンシブでwindow縮小時にwrap()で<a href>を追加してelseで<a href>削除したいです。

nyan_poi

総合スコア11

JavaScript

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

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

jQuery

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

0グッド

0クリップ

投稿2016/04/18 05:59

編集2016/04/18 09:17

レスポンシブサイト作ってる途中です。
ブラウザ幅がスマホ時にだけfancybox起動させたいですが、
jsくそ初心者なもので、if文が思いつかなくなりました…。

<a href=""><div class="box_inner">を囲ったり囲わなかったりしたいです。

###発生している問題・エラーメッセージ

elseのときに<li>が消えてしまいます。。 if( w <= 570 && w )のとき、<a href>が出てきません。。。

###該当のソースコード

$(function(){ var $box= $("li .box_inner"); function spHideModal(){ var w = window.innerWidth; if( w <= 570 && w ){ $box.wrap(function(index) { return '<a href="' + $(this).children('.staff_prof img').attr('src') + '" class="modal_btn" />'; }); $(".modal_btn").fancybox(); }else{ $box.unwrap(); } } $(window).on("load resize", function(){ spHideModal(); }); });

//HTML-------------------------------------------

```
<li> <div class="box_inner"> <div class="bg_img"><img src="photo_01.jpg" alt="" class="photo"></div> <div class="staff_prof sp_hide"><img src="profile_01.gif" alt=""></div> <div class="staff_name pc_hide"> <p class="name">ああああああ</p> <p class="team">にゃあああああああ</p> </div> </div> </li> ```

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
jQuery v1.9.1

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

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

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

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

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

kei344

2016/04/18 08:08

コードはコードブロックで囲んでください。```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
nyan_poi

2016/04/18 09:15

こうでしょうか。失礼いたしました。
kei344

2016/04/18 09:22

バッククオート3つの前後には改行を入れてください。記入エリアの下部分あたりにリアルタイムに結果が表示されていると思うので、そこを見ながら調整してください。
guest

回答3

0

・fancyboxからcolorboxに変更。
・.wrap()での処理をやめました。
<div class="box_inner"><a href>に変更。

$(function(){ var $box= $("li > a"); function spHideModal(){ var w = window.innerWidth; $box.each(function(){ var $modalImg = $(this).children('.staff_prof').children('img').attr('src'); if( w <= 765 && w){ $(this).attr("href", $modalImg).addClass("modal_btn"); $(".modal_btn").colorbox(); }else{ $(this).attr("href", "javascript:void(0);").removeClass("modal_btn cboxElement"); $("#cboxOverlay").add("#colorbox").hide(); } }); } $(window).on("load resize", function(){ spHideModal(); }); });

html---

<li> <a href=""> <div class="bg_img"><img src="photo_01.jpg" alt="" class="photo"></div> <div class="staff_prof sp_hide"><img src="profile_01.gif" alt=""></div> <div class="staff_name pc_hide"> <p class="name">ああああああ</p> <p class="team">にゃあああああああ</p> </div> </a> </li>

投稿2016/04/19 06:42

nyan_poi

総合スコア11

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

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

0

自己解決

こういう書き方も教えてもらいました。
・プラグイン未使用??
<a href_>無し

$(function(){ $(".staff_box").each(function(){ var $modalImg = $(this).children('.staff_prof').children('img').attr('src'); $(this).on("click",function(){ var _w = window.innerWidth; if( _w <= 765 && _w){ $("body").prepend("<div class='staff_colorbox'><div class='staff_bg'></div><div class='staff_img'><div class='staff_img_inner'><div class='staff_close_btn close_top'>×</div><img src='"+$modalImg+"'><div class='staff_close_btn close_bottom'>CLOSE</div></div></div></div>") $(".staff_colorbox .staff_img").css("top",$(this).offset().top+10); $(".staff_colorbox .staff_img").width( $(window).width() ); $(".staff_colorbox .staff_img img").velocity({opacity:0,scale:1},0).velocity({opacity:1,scale:1},400) $(".staff_colorbox, .staff_close_btn").on("click",function(){ $(window).off("resize.staffbox"); $(".staff_colorbox").remove(); }); $(".staff_colorbox img").on("click",function(e){ e.preventDefault(); e.stopPropagation(); }); $(window).on("resize.staffbox", function(){ var __w = window.innerWidth; if( __w <= 765 && __w){ $(".staff_colorbox .staff_img").width( __w ); }else{ $(window).off("resize.staffbox"); $(".staff_colorbox").remove(); } }); } }) }); });
<li class="staff_box"> <div class="bg_img"><img src="../img/staff/dummy.jpg" alt="" class="photo"></div> <div class="staff_prof sp_hide"><img src="../img/staff/staff_profile_01.gif" alt=""></div> <div class="staff_name pc_hide"> <p class="name">うわあああああああ</p> <p class="team">わああああああああああ</p> </div> </li>

投稿2016/04/22 10:40

編集2016/04/22 10:41
nyan_poi

総合スコア11

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

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

0

Colorboxは a タグでなくても使えます。また、remove メソッドが有るのでそれを使えばイベントを消すことができます。

JavaScript

1$( "li" ).colorbox( { href: "photo_01.jpg" } ); 2$.colorbox.remove() ;

投稿2016/04/20 16:46

kei344

総合スコア69458

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問