> $("#slide span.active").css("display","block");
spanは#slideではなく#slidenaviのほうに入ってますよ。
マウスオーバーした画像と同じliに同梱しているspanのみのcssを変更したいなら、
$('#slidenavi ul li a').mouseover(function(){
こっちの中に、
$(this).parent().children("span.active").css("display","block");
とかかな。
spanが空だから実際どうcssで装飾されているかわからないけど。
質問者
お礼
回答、ありがとうございました。
最初に教えて頂いた通り、
$('#slidenavi ul li a').mouseover(function(){
内に
$(this).parent().children("span.active").css("display","block");
を単純に付け加えたのですが、そうしたら<span>が全部<display: block>になってしまって、全部表示されたので2度目の質問をさせて頂きました。
結果的にマウスアウトの処理も加えて、以下のようにコードを整理したらうまくいきました。
$(function(){
$('#slidenavi ul li a').fadeTo(0,0.4);
$('#slidenavi ul li a').hover(function(){
$(this).fadeTo(300,1.0);
},
function(){
$(this).fadeTo(300,0.4);
})
$('#slidenavi ul li img').mouseover(function(){
var bglink = $(this).attr("class");
var altTxt = $(this).attr("alt");
$("#slide img").attr("src","images/home/main/"+bglink);
$("#slide img").attr("alt",altTxt);
$('#slidenavi ul li a').mouseover(function(){
var Href = $(this).attr('href');
$("#slide a").attr("href", Href);
$(this).parent().children("span.active").css("display","block");
});
});
$('#slidenavi ul li a').mouseout(function(){
$(this).parent().children("span.active").css("display","none");
});
$("#slide a").click(function() {
window.open(Href,'_self');
return false;
});
});
ちなみに<span>タグの位置を<li>内の最後に書くと、IE6でマウスオーバー時だけ余計な隙間が出来るので、最初に移動しました。
たぶんまだ整理が出来るのかもしれないけど、自分なりにいろいろ試したらうまく動かなくなったので、これで解決とさせて頂きます。
ありがとうございました。
質問者
補足
回答、ありがとうございます。
> spanは#slideではなく#slidenaviのほうに入ってますよ。
本当ですね(笑)。私のうっかりミスでした。
cssはこのように書いています(一部抜粋)。
#slidenavi ul li {
list-style: none;
position: relative;
}
#slidenavi ul li a {
display:block;
width: 218px;
height: 42px;
text-decoraion: none;
border: #DDD 1px solid;
}
#slidenavi ul li a:hover {
border: #F60 1px solid;
}
#slidenavi ul li a img {
border: none;
width: 218px;
height: 42px;
}
#slidenavi ul li span.active {
display: none;
position: absolute;
left: 0;
top: 50%;
margin-top: -6px;
width: 20px;
height: 8px;
background: url(active.gif) no-repeat left top;
}
やりたいことは、ナビゲーションボタンの上にマウスが乗った時に、「今はこのバナーがメインに表示されてますよ」ということが分かるように、アイコン(active.gif)を絶対配置でナビゲーション画像の上に重ねて表示させたいのです。
ご教授の通り書き換えると、先の記事の問題は解決されてうまく動作はするのですが、またしても困ったことが・・・。
よく考えれば当たり前のことなのですが、5つのナビに入っている<span>が全部<display: block>になってしまって、全部表示されます。
マウスが乗ったナビボタンの<span>だけを block にするうまい方法ってないですか?
そしてマウスが離れると再び display:none にする処理も必要ってことですよね?
お礼
回答、ありがとうございました。 最初に教えて頂いた通り、 $('#slidenavi ul li a').mouseover(function(){ 内に $(this).parent().children("span.active").css("display","block"); を単純に付け加えたのですが、そうしたら<span>が全部<display: block>になってしまって、全部表示されたので2度目の質問をさせて頂きました。 結果的にマウスアウトの処理も加えて、以下のようにコードを整理したらうまくいきました。 $(function(){ $('#slidenavi ul li a').fadeTo(0,0.4); $('#slidenavi ul li a').hover(function(){ $(this).fadeTo(300,1.0); }, function(){ $(this).fadeTo(300,0.4); }) $('#slidenavi ul li img').mouseover(function(){ var bglink = $(this).attr("class"); var altTxt = $(this).attr("alt"); $("#slide img").attr("src","images/home/main/"+bglink); $("#slide img").attr("alt",altTxt); $('#slidenavi ul li a').mouseover(function(){ var Href = $(this).attr('href'); $("#slide a").attr("href", Href); $(this).parent().children("span.active").css("display","block"); }); }); $('#slidenavi ul li a').mouseout(function(){ $(this).parent().children("span.active").css("display","none"); }); $("#slide a").click(function() { window.open(Href,'_self'); return false; }); }); ちなみに<span>タグの位置を<li>内の最後に書くと、IE6でマウスオーバー時だけ余計な隙間が出来るので、最初に移動しました。 たぶんまだ整理が出来るのかもしれないけど、自分なりにいろいろ試したらうまく動かなくなったので、これで解決とさせて頂きます。 ありがとうございました。
補足
回答、ありがとうございます。 > spanは#slideではなく#slidenaviのほうに入ってますよ。 本当ですね(笑)。私のうっかりミスでした。 cssはこのように書いています(一部抜粋)。 #slidenavi ul li { list-style: none; position: relative; } #slidenavi ul li a { display:block; width: 218px; height: 42px; text-decoraion: none; border: #DDD 1px solid; } #slidenavi ul li a:hover { border: #F60 1px solid; } #slidenavi ul li a img { border: none; width: 218px; height: 42px; } #slidenavi ul li span.active { display: none; position: absolute; left: 0; top: 50%; margin-top: -6px; width: 20px; height: 8px; background: url(active.gif) no-repeat left top; } やりたいことは、ナビゲーションボタンの上にマウスが乗った時に、「今はこのバナーがメインに表示されてますよ」ということが分かるように、アイコン(active.gif)を絶対配置でナビゲーション画像の上に重ねて表示させたいのです。 ご教授の通り書き換えると、先の記事の問題は解決されてうまく動作はするのですが、またしても困ったことが・・・。 よく考えれば当たり前のことなのですが、5つのナビに入っている<span>が全部<display: block>になってしまって、全部表示されます。 マウスが乗ったナビボタンの<span>だけを block にするうまい方法ってないですか? そしてマウスが離れると再び display:none にする処理も必要ってことですよね?