2012-08-31 88 views
3

我有一個在另一個頂部透明背景的畫布,並希望鼠標事件由他們兩個上的元素註冊。但是,較高的畫布可以防止任何鼠標事件觸及較低的事件。什麼是最好的方法?堆積的畫布事件

 <div class="outer"> 
     <div class="inner" id="canvas_container_1"></div> 
     <div class="inner" id="canvas_container_2"></div> 
    </div> 

回答

0

你可以做的是模擬在這樣所有元素觸發:http://jsfiddle.net/AzNQb/

var handler = function(e) { 
    // the actual handler 
    console.log(e.pageX, this); 
}; 

$(".inner").on("mousedown", function(e) { 
    var args = arguments; 
    var value; 
    $(".inner").each(function() { 
     // call handler for each element; preserve `return false` functionality 
     if(handler.apply(this, args) === false) { 
      value = false; 
      return false; 
     } 
    }); 
    return value; 
}); 
+0

但是,我希望在兩個畫布上正確觸發鼠標事件,而不僅僅是調用特定的處理函數。我試圖在.each函數中使用this.trigger(e),但它不起作用。達到此目的的最佳方法是什麼? – Mixel

+0

@Mixel:像這樣的東西? http://jsfiddle.net/AzNQb/1/ – pimvdb

0

兩者,你的意思是2內畫布?

如果是=然後就在你的「內部」類添加事件偵聽器:

$('.outer').on('click','.inner',function() { ... })