2014-01-27 3 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. Возможно, вы сможете использовать pageX и pageY или другие объекты, которые ev имеет.

Смежные вопросы