2017-01-26 13 views
1

私はそのクラスをオンとオフに切り替えることができるようにリスト内のimg要素を選択するのに苦労しています。 私はそれを選択する方法を変えましたが、リストの2番目または3番目の... divにマウスオーバーしても、リストの最初の画像が点灯します。子孫の要素を選択する

<ul> 
    <li> 
    <div class="container" onmouseover="toggleImgColor()" onmouseout="toggleImgColor()"> 
     <div class="container-title"> 
     <h3 class="title /> 
     <img id="pic" class="greyImg" /> 
     </div> 
     ... 
    </div> 
    </li> 
    ... 
</ul> 

Javascriptを

function toggleImgColor() { 
    $(this).find("img").toggleClass("greyImg"); 
} 
+0

あなたがフィドルを作成できますか? – gotomanners

+0

あなたのリスト内のすべての画像に同じID: 'pic'がありますか?彼らが行う場合、jQueryは常に最初のものを選択します – dimlucas

+0

@dimlucas彼はセレクタとしてIDを使用する場合のみ。しかし、私はあなたのことを聞きます。すべてのIDは一意でなければなりません。 – Gezzasa

答えて

2

あなたはこのような何かがあることを行うことができます。

$(document).ready(function(){ 
    $(".container").hover(function() { 
     $("#pic").toggleClass("greyImg"); 
    }); 
}); 
+0

慎重に注意してください。最後の文字はセミコロンの代わりにコロンです。 – Gezzasa

+1

気づいていただきありがとうございます。また、編集オプションで回答を編集することもできます。もう一度修正していただきありがとうございます。素晴らしいことをする。乾杯! –

+0

私はそれが司会者のためだけにあると思っていました。ありがとうございました。私は将来そうするでしょう。 – Gezzasa

2

はHTMLだけでtoggleImgColor()内部thisようtoggleImgColor(this)を渡し、JavaScript関数にパラメータとしてそれをキャッチ。これにより、現在ホバリングされたDOMオブジェクトがtoggleImgColor関数に渡され、それを使ってその特定のdivを表示することができます。

HTML:

<ul> 
    <li> 
    <div class="container" onmouseover="toggleImgColor(this)" onmouseout="toggleImgColor(this)"> 
     <div class="container-title"> 
     <h3 class="title /> 
     <img class="greyImg" /> 
     </div> 
     ... 
    </div> 
    </li> 
    ... 
</ul> 

はJavaScript:

function toggleImgColor(item) { 
    $(item).find("img").toggleClass("greyImg"); 
} 
+0

thxも同様に動作します:onmouseover = "toggleImgColor.call(this)" –

関連する問題