2015-07-16 6 views
0

Я пытаюсь получить щелчок, чтобы зарегистрировать мой тег изображения, чтобы получить координаты изображения, чтобы поместить элемент svg поверх него. Насколько я понимаю, способ, которым я использую свой код, должен учитывать пузырьковые события, но я не уверен на 100%. Может ли кто-нибудь помочь мне понять, что я делаю неправильно, информацию, которую я могу пропустить? На данный момент ничего не происходит.Нажмите, чтобы не регистрироваться на элементе изображения

$(".playing-field").on("click", "#picture", function(e) { 
    var offset = $("#picture").offset(); 
    var relativeX = (e.pageX - offset.left); 
    var relativeY = (e.pageY - offset.top); 
    console.log(relativeX, relativeY); 
}); 

Я забыл добавить HTML раньше ...

<div class="playing-field"> 
    <img id="picture" src="assets/images/image.jpg"> 
    <svg class="speechbubbles" width="100%" height="100%" preserveAspectRatio="xMinYMin meet"> 
</div> 

Я попробовал код в Jsfiddle без моего CSS, и он работает, но когда я добавить CSS, это не так. Я не знаком с правилами CSS, так может кто-то сказать мне, почему это мешает щелчку изображения?

.playing-field { 
position: relative; 
height: 500px; 
width: 100%; 
} 

#picture{ 
position: absolute; 
} 
.speechbubbles{ 
position: absolute; 
} 
+1

Можете ли вы сделать [стека фрагмент] (http://meta.stackoverflow.com/questions/270944/feedback-requested-stack-snippets-2-0) с HTML? – Barmar

+1

Является ли '# picture' уникальным идентификатором? И, пожалуйста, поделитесь некоторыми HTML. – Mottie

ответ

0

Вы код работает очень хорошо.

Try This https://jsfiddle.net/2bm4zjdz/1

$(".playing-field").on("click", "#picture", function(e) { 
    var offset = $("#picture").offset(); 
    var relativeX = (e.pageX - offset.left); 
    var relativeY = (e.pageY - offset.top); 
    alert('x : ' + relativeX + ' y :' + relativeY); 

}); 
+0

Hm. Он работает в Jsfiddle, но не в хроме. Мне нужно найти способ обойти это, я думаю. Благодаря! –

0

Глядя вокруг, кажется, что смещение не работает в хроме, так что вам нужно будет использовать позицию как так

$(function() { 
    $('#picture').click(function (e) { 
     var offset = $(this).position(); 
     var relativeX = (e.pageX - offset.left); 
     var relativeY = (e.pageY - offset.top); 
     alert('x :' + relativeX + ' y :' + relativeY);; 
    }); 
}); 
+0

Я просто понял, что у меня может быть регистр кликов в контейнере и сделать оператор if, который не зарегистрировал бы щелчок, если он находится за пределами параметров изображения. Теперь он отлично работает, спасибо за вашу помощь! :) –

+0

Да, это тоже сработает :) – Canvas

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