mousedown。在兄弟姐妹上傳播event.targets
我有兩個同時處理mousedown事件的'絕對位置'的兄弟節點。當我點擊'div 2'的透明區域(在圖片上)時,如何觸發'div 1'的處理程序。
mousedown。在兄弟姐妹上傳播event.targets
我有兩個同時處理mousedown事件的'絕對位置'的兄弟節點。當我點擊'div 2'的透明區域(在圖片上)時,如何觸發'div 1'的處理程序。
如果重疊元素是動態的,我不相信這是可能的,因爲所涉及的兩個重疊的元素是「兄弟姐妹」來完成這項使用常規事件冒泡。
我有同樣的問題,我能用更多的hitTest scenerio來解決它,我測試用戶的鼠標位置是否在同一個區域內。
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
}
您需要使用3個事件處理程序,一個用於div1,一個爲div2,和一個爲contentArea。 contentArea處理程序應該停止傳播,以便不調用div2處理程序。該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;
的問題是,在我的情況,我有很多這樣的div,他們是動態的(可拖動)和DIV1具有相同的結構,所以無法處理事件這樣 – AlaskaKid
謝謝,其實我做到了以類似的方式 – AlaskaKid