私は親要素を持っています。私はまた、上に置かれたときに別の要素を示す子要素を持っています。子要素のhoverIntentが起動したときに、親要素のhoverIntentを取り消すにはどうすればよいですか?
子どもの上にマウスを置いて、関連する要素のみを表示したい場合、親要素のホバーオーバーを抑制するために、同時に両方を同時に放りたいとは限りません。
これを確実に動作させるには問題があります。おそらく何かが明らかに欠けているでしょう。何か案は?
編集 - 明確化:
この場合の「親」と「子」はお互いを知らない独立した再利用可能なコンポーネントですので、私は実際には1からコンテキストを注入することはできません
これは、jQuery & hoverIntentプラグインを使用して設定したデモです。
HTML:
<div id="parentBar">
<ul id="childMenu">
<li>Menu 1</li>
</ul>
</div>
<div id="barInfo">
<p>This is shown when hovering overing inside of the parent bar.</p>
</div>
<div id="menuInfo">
<p>This is shown when hovering over inside of the child menu.</p>
</div>
CSS:
#parentBar{width:500px;border:solid 1px black;}
#childMenu{margin-left:10px;padding-left:10px;width:100px;border:solid 1px green;}
#menuInfo, #barInfo{display:none;}
はJavaScript:
$('#parentBar').hoverIntent({
//interval: 500,
over: function(e) {
$('#barInfo').show();
},
out: function(e) {
$('#barInfo').hide();
}
});
$('#childMenu').hoverIntent({
//interval: 250,
over: function(e) {
$('#menuInfo').show();
},
out: function(e) {
$('#menuInfo').hide();
}
});
$('#childMenu').bind('mouseenter', function(e){
e.stopPropagation();
});
あなたがjsFiddleにここでそれを見ることができます。子イベントでhttp://jsfiddle.net/hNqQ7/1
stopPropagationは有効な解決策ではないため、白黒ですか?なぜそれが動作しないのか分かりません。 –
stopPropagationはSAMEタイプのイベントで動作する可能性があるためです。そのプラグインのコードを開くと、 "hoverIntent"イベントのようなものを使用していないことがわかります。また、オプションを設定すると、直接イベントハンドラではありません。私のソリューションはあなたのために機能しますか? – silex
プラグインを見ると、ハンドラーをmouseenterイベントに接続しています。これは、私がchild要素にバインドしたもので、stopPropagation()と呼ばれています。私は答えに感謝し、このタイプのトラッキングがうまくいくことは確かです。私はそれに頼らざるをえないと思いました。 –