我需要为图像添加注释标记,当用户点击每个注释时需要为图像显示相应的注释消息。
它在Chrome浏览器(Mobile(IOS和Android)和桌面)中运行良好,但在移动和桌面的Safari和Firefox浏览器中都无法正常工作。
脚本
$('.announation').each(function(i) {
$('.announation').eq(i).on('click touchstart', function(e) {
$(
'.one,.two,.three,.four,.five,.six,.seven,.eight,.nine,.ten,.ele'
).eq(i).css({
top: 0,
left: document.getElementById(e.srcElement.id).offsetLeft - 380
}).show();
document.getElementById(e.srcElement.id).innerText = "x";
$('#' + e.srcElement.id).addClass("active");
});
});
HTML:
<div class="annotationsmark">
<div class="announation" alt="one" id="oneA">+</div>
<div class="announation" alt="two" id="twoA">+</div>
</div>
<div id="messages">
<div class="one">One</div>
<div class="two">two</div>
</div>
我试过多种方式:
不起作用:
$(document.body).on( "click touchstart", ".announation", function() { });
不起作用:
$('body .announation').eq(i).on('click touchstart', function(e){});
不起作用:
$('.annotationsmark').on('click', '.announation', function(e) {
var i=$(this).index();
});
答案 0 :(得分:2)
问题可能是因为srcElement
。Firefox和& Safari可能不支持此功能。
尝试将srcElement
替换为target
e.srcElement.id
e.target.id
或者,您可以创建变量并使用该变量
var target = event.target || event.srcElement;