2014-01-27 65 views
3

是否可以在添加事件處理程序時手動設置event.target,以便offsetX和offsetY總是相對於該目標。手動設置event.target

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

<script> 
    document.getElementById("outer").addEventListener("click", function(){ 
    console.log(offsetX); // this will give offsetX relative to div.inner 
          // but i want offsetX relative to div#outer 
    }); 
</script> 
+0

因爲事件在外部div上。嘗試使用jQuery和'next()'或'children()'參見http://stackoverflow.com/questions/10567709/javascript-get-child-element –

回答

0

您應該爲您的addEventListener添加一個參數。它最終會看起來像這樣:

document.getElementById("outer").addEventListener("click", function(ev) { 
    console.log(ev.offsetX); } 

ev現在捕獲事件,幷包含您使用使用某些屬性。 offsetY也將可用。如果這不起作用,你應該看看this SO post on mouse positions。您可能可以使用pageXpageYev具有的其他屬性。