<li><a href="home.html"> Home </a> </li>
<li> <a href="contact.html">Contact </a></li>
$('li').mouseenter( function() {
$(this).attr('a').css("color", "red");
});
失敗します。私はその「li」内でそれに到達する方法を理解しようとしています。('li a'ではありません)
<li><a href="home.html"> Home </a> </li>
<li> <a href="contact.html">Contact </a></li>
$('li').mouseenter( function() {
$(this).attr('a').css("color", "red");
});
失敗します。私はその「li」内でそれに到達する方法を理解しようとしています。('li a'ではありません)
a
属性ではなく要素である場合は、次のfind
メソッドを使用できます。
$('li').mouseenter(function() {
$(this).find('a').css("color", "red");
// or using $(selector, context):
// $('a', this).css("color", "red");
});
ただし、JavaScriptはCSSのようには機能しません。mouseleave
イベントの色を変更する必要があります。クラスを作成し、toggleClass
メソッドを使用できます。
.red {
color: red;
}
$('li').hover(function() {
$(this).find('a').toggleClass('red');
});
また、CSS(より軽量で高速)を使用することもできます。
li:hover a {
color: red;
}
これにはchildren
またはを使用できますfind
$('li').mouseenter( function() {
$(this).children('a').css("color", "red");
});
注: Children
ノードの下の DOM 全体をトラバースしながら、ノードの直下の子のみを調べfind
ます。そのため、同等の実装が与えられた場合、子はより高速になるはずです。ただし、find はネイティブのブラウザー メソッドを使用しますが、children はブラウザーで解釈される JavaScript を使用します。私の実験では、典型的なケースではパフォーマンスに大きな違いはありません。
あなたもこの方法を行うことができます:
$('li').mouseenter( function() {
$('a', this).css("color", "red");
});