2017-01-12 12 views
0

私は広範囲に検索し、解決策を見つけることができません。Javascript:ホバー要素、無関係な要素のクラスを変更します

私は2つのdivを持っています。もう一方の右に1つ。各divにはリスト要素がありますが、彼らは決して親や兄弟ではないので、私はCSSを使うことはできません。

誰かが解決策を持っていますが、どこにHTMLドキュメントが置かれているかに関係なく、HTMLドキュメント内のどこにでもリンクを張って、別の要素のクラスを変更することができます。例えばJavascript。

アイデアは、左のリストに要素を置くと、それが関連すると考えられる要素を右側のリストで強調表示するという考えです。

+0

あなたを貼り付けることができここにhtml? – Deep

+0

ホバーはjqueryですが、右は – sweaver2112

+0

、jQueryはJavaScriptです –

答えて

1

これを達成する方法はたくさんあります。私は、mouseenter mouseleaveイベント(基本的にhover)のために、別の要素のクラスを操作するためにjQueryを使用するサンプルを作成しました。

<div class="red"> 
    x 
</div> 
<div class="green"> 
    y 
</div> 

$('.red').on('mouseenter mouseleave', function() { 
    if ($('.green').hasClass('hover')) { 
    $('.green').removeClass('hover'); 
    } else { 
    $('.green').addClass('hover'); 
    } 
}); 

Sample

+0

ありがとうございます! を追加しました。私の頭部(「js」と呼ばれるフォルダ内の2つのファイルとパスは正しい)、CSSのCSSとHTML文書のHTMLが表示されます。これはコンピュータのフォルダ内でオフラインです。ディビジョンとスタイリングはうまくいきますが、ホバーからは反応がありません。私はここで何が欠けていますか? 「js.js」はW3の学校のようにjsを置く場所です。 –

+0

ブラウザコンソールを開き、エラーが出力されるかどうかを確認してください – VladNeacsu

+0

js.js:1 Uncaught TypeError:$(...)onは関数ではありません(匿名関数)@ js.js:1 –

0

jqueryのは、かなり大規模なライブラリです。私は非常に純粋なjavascriptでこれを行うことをお勧めしますあなたはあなたのWebページの他の場所でJqueryを使用していない場合。ここでは、単純なIf文で別のdivが呼び出されたときにdivのクラスを変更する例を作成します。ここで

https://jsfiddle.net/c16rvt0y/1/

function highlightDiv(){ 
    if (document.getElementById("highlightMe").className === "otherDiv"){ 
     document.getElementById("highlightMe").className = "otherDiv otherDivHighlighted" 
    } else { 
    document.getElementById("highlightMe").className = "otherDiv" 
    } 
} 

1が関数によって呼び出されるにdepanding別のdivを対象例である:

https://jsfiddle.net/c16rvt0y/2/

function highlightDiv(highlightMeID){ 
    if (document.getElementById(highlightMeID).className === "otherDiv"){ 
     document.getElementById(highlightMeID).className = "otherDiv otherDivHighlighted" 
    } else { 
    document.getElementById(highlightMeID).className = "otherDiv" 
    } 

}

+0

これは動作しますが、対象となる要素のクラスを上書きします – VladNeacsu

+0

2番目の例のように境界/背景を変更する要素に別のクラスを追加することができます。それはそれを上書きしません。 .classで非hightlighted divを、.class.hightlightedClassで強調表示されたdivを呼び出します。2番目はより具体的なので、通常の.classで同じスタイリングをオーバーライドします(私は意味があることを望みます)。 – Benneb10

+0

完全にクリアしますが、コードで 'otherDiv'クラスをメンテナンスする必要があります。要素の前にあった。 jQueryはクラスの追加と削除でこれを正しく処理します。 JavaScriptを使って簡単に行うことができますが、jQueryは理解しやすくなります。 – VladNeacsu

関連する問題