2016-07-27 20 views
0

こんにちは経験豊富な友人JQueryスニペットを簡略化

このJQueryのスニペットを簡略化したいと思いますか?

私は単純化しようとしましたが、成功しませんでした。私ができることは、すべてのimg.mainを選択していましたが、ホバリングでは、すべての画像がクラスimgHoverになりました。

$("#1 button").hover(function() { 
    $("#1 img.main").toggleClass("imgHover"); 
}); 

$("#2 button").hover(function() { 
    $("#2 img.main").toggleClass("imgHover"); 
}); 

$("#3 button").hover(function() { 
    $("#3 img.main").toggleClass("imgHover"); 
}); 

$("#4 button").hover(function() { 
    $("#4 img.main").toggleClass("imgHover"); 
}); 

$("#5 button").hover(function() { 
    $("#5 img.main").toggleClass("imgHover"); 
}); 

$("#6 button").hover(function() { 
    $("#6 img.main").toggleClass("imgHover"); 
}); 

あなたは

+3

あなたのHTMLはどのように見えますか? – empiric

+1

ボタンのホバー上でボタンのIDを取得し、そのIDにトグルクラスを適用します。 – ODelibalta

+2

IDとして数字だけを使用しないでください:['IDとNAMEトークンは文字([A-Za-z])で始まり、任意の数の文字、数字([0-9] 、ハイフン( " - ")、アンダースコア( "_")、コロン( ":")、およびピリオド( "。")。]](https://www.w3.org/TR/html401/types.html #タイプ名) – empiric

答えて

1

現在、1,2,3 ... IDは、例えば持つ要素に共通するクラスを追加します。ありがとうございました

<div id="1" class="newClassName"> 
    <button>Click me</button> 
    <img class="main" /> 
</div> 

次に、このような一般化はJQueryを使用する:

$(".newClassName button").hover(function() { 
    $(this).closest(".newClassName").find("img.main").toggleClass("imgHover"); 
}); 

これは、その内の画像を見つけて、クラスを適用し、周囲(newClassName)要素を見つけます。そうすれば、このJSは、どのセクションが浮かび上がっても問題なく動作します。

+0

これはスポットです!それがいかに単純かを愛する!私がそれを適用した場所です。 –

+1

@Nunocruz問題なし、喜んで助けてください:) – DBS

+0

'closest()'の代わりに 'parent()'を使うことをお勧めします。 '親要素であることを既に知っているので、' find() 'の代わりに' children() 'を使うこともできます。これは、あなたが探している要素が直系の子孫であることを既に知っているからです。 –