
jQuery初心者で、知識が浅いのでご教授頂けると幸いです。
横1列に下記のような順番でテキストや画像を並べています。
=================================
タグ 画像 テキストテキストテキスト テキスト
=================================
このBOX自体に class="top_odai" とつけています。
これが30段程、同じものが繰り返されます。(タグやテキスト内容は変わります。画像は同じものです)
.top_odai内のリンクを探して、このBOX全体がリンクになるように設定しています。
マウスオーバー(hover)すると、「画像が少し大きくなる&タグが左にずれる」動作が起きるようにしました。
テキスト自体は、色が変わってシャドウが付きます。
この設定をjQueryで書いてみました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
$(document).ready(function() {
var linkboxes = $('.top_odai');
for (var i=0; i<linkboxes.length; i++){
var readmores = $('div.title');
for (var j=0; j<readmores.length; j++){
$('.top_odai').click(function() {
var anchorTags = this.getElementsByTagName("a");
window.location = anchorTags[0].href;
});
}
}
});
$(function(){
$('.top_odai')
.each(function(){
$('.top_odai div.headwill img').css({'width':'20px','height':'20px'});
})
.hover(function(){
$(this).addClass('top_odai_hover');
$('div.title a').css({'color':'#FF3300','text-decoration':'none'});
$('.top_odai div.headwill img').stop().animate({'width':'30px','height':'30px','marginTop':'-5px'},'normal');
},
function(){
$(this).removeClass("top_odai_hover");
$('div.title a').css({'color':'#525252','text-decoration':'none'});
$('.top_odai div.headwill img').stop().animate({'width':'20px','height':'20px','marginTop':'0px'},'normal');
}
);
});
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
これで、記述はかなりスマートじゃないと思いますが、、、一応希望通りの動きはします。
ただこれでは全ての「class="top_odai"」に反応してしまいます。
1つのリンクに触れると、他の段の全てのBOXが同じく動いてしまいます。
下記は動作のテストページになります。
http://music333.oops.jp/test/test.html
これを1つのリンクに触れたら、そのBOX(.top_odai)だけ上記の動きを
させたいのですが、どのようにすれば良いのか、、、かなりハマっております。
各top_odaiに連番のidを割当て指定してみたりと色々試してみましたが全滅でした。
どのように書き換えたら、良いでしょうか?
アドバイス・ご教授どうぞ宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
>1つのリンクに触れると、他の段の全てのBOXが同じく動いてしまいます。
ホバーした要素に関係なく、全体の $('div.title a') などに対して処理をしているからでしょう。
$('div.title a', this)などでセレクトすればよいのでは?
.
セレクタの指定方法について調べてみるのがよろしいかと思います。
おせっかいながら、各要素の構成が決まっているのであれば…
例えば、img要素が一つだけなのでわざわざクラス設定などをしなくともセレクト可能だし他の要素も同様なので、外側の構成要素さえ特定できれば充分と思われます。
ご教授ありがとうございます!!!
$('div.title a', this)という形で各要素を指定しなおしたら
無事リンク1個1個で動作致しました。
imgや他要素もクラス設定なしでまとめて記載した所、こちらも問題なく動作しました。
今一度、セレクタの指定方法を勉強しなおします。
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像のフェードイン・フェード...
-
デフォルト非表示にしたい。【t...
-
IMGタグごとにCSSを設定する方法
-
bxsliderで最初に縦に複数表示...
-
画像マウスオーバーで、checkb...
-
javascriptテキストBOX色を元に...
-
フォームに入力された値により...
-
MAX関数を使ってからLEFT JOIN...
-
1枚の画像をクリックすると複数...
-
自働生成される<div>タグに連番...
-
javascriptでフォーカスを当て...
-
指定したパスが現URLに含まれて...
-
jQuery bxSlider 画像に変更
-
removeAttribute()メソッドで削...
-
CSS <div>の入れ子が反映さ...
-
外部javascriptの重複を防ぐには
-
クリックすると下に説明文が出...
-
YouTubeをブログに貼る時、1つ...
-
リンク色を動的に変更したい。i...
-
離れた場所にマウスオーバーで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jQueryで同じクラス名のものを...
-
デフォルト非表示にしたい。【t...
-
スクリプト
-
jQueryで4枚の画像がフェードア...
-
交互に入れ替わる画像を複数配置
-
クリッカブルマップをロールオ...
-
bxsliderで最初に縦に複数表示...
-
複数bxsliderをタブで切り替え...
-
JavaScriptでの画像切り替えを...
-
「画像クリックで音声再生」を ...
-
画像切り替え
-
ボタンを押すたびに交互に切り...
-
jQuery 親要素の大きさに合わせ...
-
画像のフェードインについて・...
-
ボタンを画像に変更したい
-
画像のフェードイン・フェード...
-
アップロードファイルの種類に...
-
クリックでクリッカブルマップ...
-
Jquery cheeckbox(複数)とsli...
-
画像の切り替えについて
おすすめ情報