Javascript 在jQuery中重复单击事件而不删除以前的单击效果

Javascript 在jQuery中重复单击事件而不删除以前的单击效果,javascript,jquery,Javascript,Jquery,$(文档).ready(函数(){ $('img')。单击(函数(e){ var offset=$(this.offset(); /*警报(“X:”+(e.pageX-offset.left)+“/Y:”+(e.pageY-offset.top))*/ $(this).after('Label'); $('.label').offset({top:e.pageY-offset.top,left:e.pageX-offset.left}); }); }); .label{ 位置:绝对位置; } 问

$(文档).ready(函数(){
$('img')。单击(函数(e){
var offset=$(this.offset();
/*警报(“X:”+(e.pageX-offset.left)+“/Y:”+(e.pageY-offset.top))*/
$(this).after('Label');
$('.label').offset({top:e.pageY-offset.top,left:e.pageX-offset.left});
});
});
.label{
位置:绝对位置;
}

问题在于,尽管您添加了一个新的
img
,但您的
.label
选择器正在更改所有
img
元素的位置,即使是先前添加的元素。您需要修改代码,使其仅与添加的新
img
元素相关。试试这个:

$('img').click(function(e) {
    var offset = $(this).offset();
    $('<img src="images/badge.png" alt="Badge" title="Badge" class="label" />')
        .insertAfter(this)
        .offset({ 
            top: e.pageY - offset.top, 
            left: e.pageX - offset.left 
        });
  });
$('img')。单击(函数(e){
var offset=$(this.offset();
$('')
.insertAfter(本)
.offset({
顶部:e.pageY-offset.top,
左:e.pageX-offset.left
});
});
更新

根据更新的HTML示例和要求,这应该适用于您:

$('img').click(function (e) {
    var offset = $(this).offset();
    $('<h3 class="label">Label</h3>')
        .insertAfter(this)
        .css({
            top: e.pageY - offset.top,
            left: e.pageX - offset.left
        });
});
$('img')。单击(函数(e){
var offset=$(this.offset();
$(“标签”)
.insertAfter(本)
.css({
顶部:e.pageY-offset.top,
左:e.pageX-offset.left
});
});

你好,罗瑞,由于某种原因,该代码删除了客厅图像,因此它对我不起作用。如果我替换(在我的原始代码中)单击事件以添加元素而不是图像元素,我仍然有相同的问题。在这种情况下,请您将完整的HTML和JS代码添加到问题中,因为在没有看到完整问题的情况下很难诊断准确的问题。body元素只有客厅图像,我现在在问题中添加了车身区号。使用
偏移量可能会有问题。尝试在CSS中将标签设置为
位置:绝对
,然后设置其
顶部
左侧
位置。下面是一个工作示例:下面是另一个使用图像和
h3
元素的示例: