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

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

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

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

Q&A

解決済

1回答

1661閲覧

jqueryで.hoverイベントが条件外でも動いてしまう

shiro-kuma

総合スコア15

jQuery

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

0グッド

1クリップ

投稿2016/03/23 09:45

編集2016/03/23 10:04

レスポンシブのWEBサイトを制作しています。

jqueryで、一定のブラウザサイズの時のみ、hoverイベントを付加したいのですが、一度リサイズすると、条件外でもイベントが発生してしまいます。
条件外のときに発生しないようにするためには、どうずれば良いのかご教示いただけないでしょうか。

よろしくお願いいたします。

コード

lang

1$(window).on('load resize', function(){ 2 w = $(window).width(); 3 h = $(window).height(); 4 header = $("header"); 5 nav1 = header.find("#nav1"); 6 7 if( w > 679 ){ 8 nav1.find("li.nav1-1 a").hover( 9 function(){ 10 $(this).stop().animate({"width" : 150}); 11 $(this).find(".pnm").fadeIn(100); 12 }, 13 function(){ 14 $(this).stop().animate({"width" : 30}); 15 $(this).find(".pnm").fadeOut(100); 16 } 17 ); 18 } 19}

HTML

1<header> 2 <nav id="nav1"> 3 <ul> 4 5 <li class="nav1-1"><a href="tel:000-000-0000"> 6 <span> 7 <b class="pnm">000-000-0000</b> 8 </span> 9 </a></li> 10 11121314 15 </nav> 16</header>

CSS

1header #nav1 { 2 overflow: hidden; 3 margin: 5px 0 20px 0; 4 float: right; 5} 6 7header #nav1 li { 8 display: block; 9 float: left; 10 margin-left: 5px; 11 text-align: center; 12} 13 14header #nav1 li a { 15 width: 150px; 16 height: 30px; 17 background: #fff; 18 border: 1px solid #113a5c; 19 box-sizing: border-box; 20 color: #113a5c; 21 font-weight: bold; 22 font-size: 0.85rem; 23 line-height: 1; 24 display: block; 25} 26 27header #nav1 li a:hover, header #nav1 li a:focus {background: #113a5c; color: #fff; font-weight: normal;} 28header #nav1 li a:hover svg, header #nav1 li a:focus svg {fill:#fff;} 29 30header #nav1 li span { 31 width: 150px; 32 height: 28px; 33 display: table-cell; 34 text-align: center; 35 vertical-align: middle; 36 text-indent: -0.5rem; 37 38} 39 40header #nav1 li svg { 41 fill: #113a5c; 42 vertical-align: middle; 43 margin-top: -3px; 44} 45 46 47header #nav1 li.nav1-1 a { 48 width: 30px; 49 background: #009fa8; 50 border: none; 51} 52 53header #nav1 li.nav1-1 a span { 54 text-indent: 0; 55 color: #fff; 56 white-space: nowrap; 57} 58 59header #nav1 li.nav1-1 svg { 60 width: 11px; 61 fill: #fff; 62 margin-top: 0; 63} 64 65header #nav1 li.nav1-2 svg { 66 width: 14px; 67} 68 69header #nav1 li.nav1-3 svg { 70 width: 16px; 71 padding-right: 1px; 72} 73 74header #nav1 li.nav1-4 svg { 75 width: 14px; 76 padding-right: 3px; 77} 78 79header #nav1 li.nav1-5 a { 80 background: #113a5c; 81 color: #fff; 82 font-weight: normal; 83} 84 85header #nav1 li.nav1-5 svg { 86 width: 16px; 87 padding-right: 3px; 88 fill: #fff; 89} 90 91header #nav1 li.nav1-5 a:hover, header #nav1 li.nav1-5 a:focus {background: #009fa8; border: 1px solid #009fa8;} 92 93@media screen and (max-width:679px){ 94 #nav1, #nav2 { 95 width: 100%; 96 float: none !important; 97 } 98 #nav1 { 99 margin-bottom: 5px !important; 100 } 101 102 #nav1 li { 103 width: 49%; 104 margin-bottom: 5px; 105 } 106 107 .nav1-2 , .nav1-4 { 108 margin-left: 0 !important; 109 } 110 111 .nav1-3, .nav1-5 { 112 margin-left: 2% !important; 113 } 114 115 header #nav1 li a { 116 width: 100% !important; 117 } 118 119 header #nav1 li a span { 120 width: 100% !important; 121 height: auto; 122 padding-top: 9px; 123 display: block; 124 text-indent: -0.5em !important; 125 } 126 127 #nav1 .nav1-1 { 128 width: 100%; 129 margin: 0 0 15px 0 !important; 130 float: none; 131 clear: both; 132 } 133 134 #nav1 .nav1-1 a { 135 width: 100% !important; 136 height: 40px; 137 font-size: 1.2rem; 138 } 139 140 #nav1 .nav1-1 a span { 141 width: 100%; 142 height: auto; 143 padding-top: 9px; 144 text-indent: -0.5em !important; 145 display: block; 146 } 147 148 header #nav1 li.nav1-1 svg { 149 width: 18px; 150 margin-top: -3px !important; 151 } 152 153 .pnm { 154 display: inline; 155 } 156 157 header #nav2 ul li { 158 text-align: center; 159 margin-bottom: 5px; 160 width: 49%; 161 } 162 163 header #nav2 ul li:nth-child(2n) { 164 padding-left: 2% !important; 165 } 166 167 header #nav2 ul li a { 168 border: 1px solid #4a4a4a; 169 color: #1a1a1a; 170 background: #ccecee; 171 padding: 10px 0; 172 box-sizing: border-box; 173 font-weight: bold; 174 font-size: 0.9rem; 175 } 176 177 header #nav2 a:hover, header #nav2 a:focus { 178 color: #009fa8; 179 border: 1px solid; 180 } 181 182}

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

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

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

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

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

guest

回答1

0

ベストアンサー

イベントは一度関連付けられると、意図的に関連付けを切らないかぎりそのまま残ります。
つまり、一定のブラウザサイズになり、イベントが関連付けられると、その後ブラウザサイズに変化があっても、
イベントの関連付けはそのままです。

.off()というメソッドがありますので、条件外の時にはイベントの関連付けを外すように設定してみてください。

投稿2016/03/23 09:54

yamato_hikawa

総合スコア2092

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

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

shiro-kuma

2016/03/23 10:17 編集

ご回答ありがとうございます! 先ほどやってみたところ、イベントを外すことができました。 初歩的なところだと思いますが、イベントの関連付けのことがわからなかったため、 勉強になりました。 ここでしばらくつまずいていたのでとても助かりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問