2011-12-07 16 views
0

私は問題があります。私はページのメニューに半透明のdivを持っていて、そのdivをクリックしたいと思います。jqueryを使用してオーバーレイdivをクリックできないようにする

有効なCSSを生成する必要があるため、CSSプロパティのポインタイベントはオプションではありません。試してみた:

event.preventDefault(); 
event.stopPropagation(); 

"bottom layer"のdivはクリックされません。ここで

簡易版で私のコードです:

<div id="menuContainer"> 
<div id="menu"> 
//here comes all the items of my menu 
</div> 
</div> 
<div id="shadow"> 
</div> 

CSS:

#menuContainer { 
position: absolute; 
top: 0px; 
z-index: 0; 
height: 200px; 
} 
#menu { 
width: 300px; 
height: 30px; 
margin: 0 auto; 
position: absolute; 
z-index: 10; 
top: 160px; 
} 
#shadow { 
position: absolute; 
z-index: 1; 
top: 150px 
height: 200px; 
} 

ちょうど私が時に必要な、私はZインデックスまたはレイアウトを変更するためのオプションではありません私は影をクリックし、クリックはメニューに "再送信"されます。

+1

これは可能ではありません。私が知る限り、サポートされていないブラウザのポインタイベントの代わりはありません。あなたはサイトのレイアウトを変更する必要があり、Z-Indexは要素をクリックすることであなたを助けません。私が考えることができるのは、マウスポインターの位置を捕まえてカバー要素の背後にある対応する要素をトリガーすることだけですが、それは基本的に設計上の欠陥であるものにとっては過度に複雑です。 – adeneo

答えて

1

jQueryのclick()関数を調べましたか?

http://api.jquery.com/click/

あなたは、最上位の要素にクリックイベントをキャッチし、以下の要素をクリックをシミュレートし、元のクリックを停止するリターンことができます。

0

あなたはこの

$('#shadow').click(function() { 
    $('#menu').trigger('click'); 
}); 

影の要素は、メニューへのクリックイベントを通過しているような何かを行うことができます。

マウスの位置もリレーする必要がある場合は、Mouse Positionチュートリアルをご覧ください。

+0

しかし、私がメニューへのクリックをトリガーすると、自動的に内部要素にイベントがトリガーされますか?私は持っています:

IAmJulianAcosta

+0

いいえ! #menu要素だけがトリガされます。シャドウ要素の背後にあるメニューの部分を何らかの形で特定し、その特定の要素を代わりにトリガする場合を除きます。 – adeneo

+0

ええ、私は@adeneoに同意します。このアプローチはおそらく設計の欠陥です。メニューの上に何かを置く必要があるのはなぜですか?メニュー項目の背景イメージなどを設定するだけですか? – declan

関連する問題