複数の要素に対して、それぞれ処理を実行する必要があり、jQueryプラグイン化すれば、同じ記述を何度もしなくてもソースを短くすることが可能ではないかと考え、やってみたのですがうまくいかずに困っています。
何か良いお知恵をお貸しいただけないかと思い投稿させていただきました。
やりたいこと
- .sec1の.btnがクリックされたら、そのなかのhogeがfadeoutする
- .hogeの高さは各secの.textを取得し、CSSに追加する
html
1<div class='sec1'> 2 <a class='bth'>クリック</a> 3 <div class='hoge'></div> 4 <div class='text'>テキストテキスト</div> 5</div> 6<div class='sec2'> 7 <a class='bth'>クリック</a> 8 <div class='hoge'></div> 9 <div class='text'>テキストテキスト</div> 10</div>
js
1;(function($) { 2 $.fn.hoge = function() { 3 $content = $(this); 4 function resizeCon () { 5 var $w = $(window), 6 h = $content.find('.text').outerHeight(); 7 $content.find('.hoge').css({ 8 width: w, 9 height: h, 10 }); 11 } 12 resizeCon(); 13 $(window).resize(resizeCon); 14 $content.find('.btn').click(function() { 15 $content.find('.hoge').fadeOut(800); 16 }); 17 } 18})(jQuery); 19$(function() { 20 $('.sec1').hoge(); 21 $('.sec2').hoge(); 22});
現状
やりたいことの2つ目はうまくいっているようなのですが、1つ目がうまくいかない状況です。
.sec2の.btnをクリックすると.sec2のhogeがfadeoutするのですが、.sec1をクリックしても.sec2のhogeが消えていってしまいます。
処理が上書きされているのだろうか…とは思うのですが…。
誰かにソースを見てもらう機会もなく、プラグイン化もはじめてで、これでよいのかどうなのかわからないまま書きすすめてしまっています、もし何かアドバイスいただけるようでしたら是非お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/05 05:13
2017/06/05 05:15
2017/06/05 05:20
2017/06/05 05:39
2017/06/05 05:57 編集
2017/06/05 07:23