2017-08-01 4 views
0

一つである推移オーバー(CSS、JS、HTML)を除いて好きこのように見えるいくつかのHTML/JavaScriptをすべてのdivを選択します私が作成したdiv(右、下、正面)は、列のように見えるようにしてクローンし、それぞれに一意のID(#reason0、#reason1など)を与えます。上に乗っているもの以外のすべての列を選択する:クローンの一つ本部複数回は、その後、私が持っている

#reason0:hover ~ .reason-container:not(#reason0) { 
    display: none; 
} 

最初のクローンがホバリングされ、このクラスの他のすべてのインスタンス(.reason-container)は "display:none"に設定されますが、これはターゲットとされた後の兄弟を選択するだけです。 #reason1が代わりに使用された場合、reason#0と#reason-xは "display:block"のままとなり、#reason2 - #reason4は "display:none"となります。どんな洞察も高く評価されます。ありがとうございました。

答えて

0

セレクタは、の後、兄弟をDOM内でのみ選択します。あなたの場合、フォーカスしている兄弟は#reason0:hoverになります。兄弟コンビネータの詳細については、this answerを参照してください。

の回避策として、あなたは、このソリューションをどう思いますか:

$("#reason0").hover(function() { 
    $(".reason-container").each(function() { 
     $(this).css({"display": "none"}); 
    }); 
    $(this).css({"display": "block"}); 
}); 

をところで、:not()セレクタはvery poor browser supportを持っています。ちょうどFYI。 HuskyBlueが提案するもののオフに行く

+0

私はそれが好きです。ただし、これは他の列の表示を(何らかの理由で)永久に変更します。つまり、ホバーが解放されると、表示プロパティは「なし」のままです。この問題を解決するためにこれをさらに一歩踏み出す方法についてのご意見はありますか? – laroy

+0

はい、その機能を可能にする[Fiddle](https://jsfiddle.net/qo96m9ag/1/)です。 – HuskyBlue

0
<script type="text/javascript"> 
     $("#reason0").hover(function() { 
      $(".reason-container").each(function() { 
       $(this).css({"display": "none"}); 
      }); 
      $(this).css({"display": "block"}); 
     }, 
     function() { 
      $(".reason-container").each(function() { 
       $(this).css({"display": "block"}); 
      }) 
     }); 
    </script> 

、私は潜在的な解決策で周りに手を加えて、私はそれがしたいだけのように動作しているこの思い付きました。

関連する問題