「絶対位置」を持つ2つの兄弟ノードがあり、どちらもマウスダウンイベントを処理します。「div 2」の透明な領域をクリックしているときに「div 1」のハンドラーをトリガーするにはどうすればよいですか (写真上)。
3598 次
3 に答える
4
重なり合う要素が動的である場合、問題の 2 つの重なり合う要素は「兄弟」であるため、通常のイベント バブリングを使用してこれを達成することはできないと思います。
私は同じ問題を抱えていましたが、ユーザーのマウスの位置が同じ領域内にあるかどうかをテストする、より多くの hitTest シーンで解決することができました。
function _isMouseOverMe(obj){
var t = obj.offset().top;
var o = obj.offset().left;
var w = obj.width();
var h = obj.height();
if (e.pageX >= o+1 && e.pageX <= o+w){
if (e.pageY >= t+1 && e.pageY <= t+h){
return true;
}
}
return false
}
于 2012-03-01T02:49:09.517 に答える
0
div1 用、div2 用、および contentArea 用の 3 つのイベント ハンドラーを使用する必要があります。div2 ハンドラーが呼び出されないように、contentArea ハンドラーは伝搬を停止する必要があります。div2 ハンドラーは div1 ハンドラーを呼び出す必要があります。
function div1Click (e)
{
// do something
}
function div2Click (e)
{
div1Click.call(div1, e);
}
function contentAreaClick (e)
{
e = e || window.event;
if (e.stopPropagation) e.stopPropagation();
e.cancelBubble = true;
// do something
}
div1.onclick = div1Click;
div2.onclick = div2Click;
contentArea.onclick = contentAreaClick;
于 2011-10-18T17:34:29.310 に答える