2016-12-29 7 views
3

イベントをある要素から別の要素にトリガー/リダイレクトする方法を探しています。どのようにこれを行うことができますか、それはまったく可能ですか?私はではありません。イベント関数を直接呼び出す方法を探しています。代わりに、マウスイベントが実際の要素で直接発生した場合に通常発生するすべてのUI後遺症をブラウザに実行させます。チェックボックスの要素の動作に似ています(<label>)。UIのイベントを間接的にトリガーする

例:私は:hover CSS疑似クラスを持つDIVを持っています。私は2番目のDIVを持っています。どちらのDIVも入れ子になっていません。マウスが2番目のDIV上にマウスを置いた場合、最初のDIVの上にマウスが移動したようにブラウザを動作させたいので、最初のDIVのCSS疑似クラス:hoverをロードします。しかし、私はそれに明示的なCSS名をつけたくないです - 私はブラウザに:hoverと他のCSS擬似クラスを使いたいと思っています。

CSS

#div1 { 
    background: green; 
} 

#div1:hover { 
    background: red; 
} 

#div2 { 
    width: 100px; 
    height: 100px; 
    position: absolute; 
    bottom: 0; 
    right: 0; 
    background: blue; 
} 

HTML

<div id="div1">Hello</div> 
<div id="div2">world</div> 

んjQueryを、してください。プレーンなバニラJavaScriptのみ。

編集: dispatchEventを使用しても、UI(CSS疑似クラス、:hoverなど)は起動されません。例(1行に申し訳ありません):

<div id="div2" onmouseover="var e=document.getElementById('div1'); var evt = new MouseEvent('mouseover', {'view': window,'bubbles': true,'cancelable': true}); e.dispatchEvent(evt);">world</div> 
+1

なぜ要素IDまたはクラスを変更できないのですか? – Prajwal

+0

外国のCSSクラスを使用することではありません。私はそれらを "誘発したい"。リモートでチェックボックスのUIの外観を変更する '

+0

イベントが発生したときに別のイベントを呼びたいのですか? – Prajwal

答えて

2

JavaScriptでイベントをディスパッチしたいと思います。

かなり簡単です。これを使用してイベントをディスパッチすることができます。

elem.dispatchEvent(event); 

ここで、elemはターゲット要素です。

Mozilla docsをご覧ください。

これはMozillaのドキュメントからコピーしたコードスニペットです。 MouseClickイベントをディスパッチします。

function simulateClick() { 
    var event = new MouseEvent('click', { 
    'view': window, 
    'bubbles': true, 
    'cancelable': true 
    }); 
    var cb = document.getElementById('checkbox'); 
    var cancelled = !cb.dispatchEvent(event); 
    if (cancelled) { 
    // A handler called preventDefault. 
    alert("cancelled"); 
    } else { 
    // None of the handlers called preventDefault. 
    alert("not cancelled"); 
    } 
} 

これはMouseOverイベントです。

object.addEventListener("mouseover", myScript); 

チェックアウトW3CSchool doc

+0

ありがとうございますが、残念ながら、これは ':hover'のようなCSS擬似クラスを起動しません。私は 'MouseEvent'とイベント名' mouseover'、 'mouseenter'と' mousemove'で試してみましたが、どれもUI(CSS)をトリガーしませんでした。関連するイベント機能を起動しますが、私が言ったように、これは私が探しているものではありません。私は 'UIEvent'または' FocusEvent'をディスパッチしようとしますが、どのようにそれらを作成するのか(正確には、どのイベント名を与えるか( "mouseover"?)はわかりません。 – StanE

+0

イベントオブジェクトです。文字列ではありません – Prajwal

+0

私は 'MouseEvent'のコンストラクタについて言います。最初のparamはイベント名の文字列でなければなりません。 ':hover'を使用すると、イベント名は' mouseover'のようなものになりますが、 'click'のようなものではありません。私自身の'

関連する問題