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
元素的示例: