Javascript 当我有一个设置的超时运行时,我怎么能不监听mouseenter和mouseleave事件呢?

Javascript 当我有一个设置的超时运行时,我怎么能不监听mouseenter和mouseleave事件呢?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在尝试创建一个简单的“点击将文本复制到剪贴板”功能,我很难编写javascript,这样不同的事件就不会相交。每次用户将鼠标悬停在textarea上时,我都希望textarea更改背景颜色,并说“单击以复制”,当您实际单击时,文本区域将颜色更改为其他颜色,并说“复制” 每次用户将鼠标悬停在文本区域上时,理想情况下都应该执行相同的操作。但是,现在当我单击“复制”,然后离开文本区域并返回不同的文本重叠时。如何确保set timeout函数完全运行,然后才再次侦听mouseenter和mousel

我正在尝试创建一个简单的“点击将文本复制到剪贴板”功能,我很难编写javascript,这样不同的事件就不会相交。每次用户将鼠标悬停在textarea上时,我都希望textarea更改背景颜色,并说“单击以复制”,当您实际单击时,文本区域将颜色更改为其他颜色,并说“复制”

每次用户将鼠标悬停在文本区域上时,理想情况下都应该执行相同的操作。但是,现在当我单击“复制”,然后离开文本区域并返回不同的文本重叠时。如何确保set timeout函数完全运行,然后才再次侦听mouseenter和mouseleave事件

此外,以下是代码:

var pixelCodeTextarea=$(“#跟踪_html”),
textareaCopiedText=$(“#像素_textarea_copy”),
textareaCopiedText2=$(“#像素_textarea_copied”),
textareaWrapper=$(“#像素_textarea_wrapper”);
textareaWrapper.mouseenter(函数(){
textareaCopiedText.removeClass(“隐藏”);
css('background-color','#f1f8fb');
}).mouseleave(函数(){
textareaCopiedText.addClass('hidden');
css('background-color','transparent');
});
pixelCodeTextarea.on('单击',函数()){
textareaCopiedText.addClass('hidden');
css('background-color','#bbcadc');
textareaCopiedText2.removeClass(“隐藏”);
setTimeout(函数(){
css('background-color','transparent');
textareaCopiedText2.addClass('hidden');
}, 1500);
});
。隐藏{
显示:无;
}
.textarea_包装器{
位置:相对位置;
最大宽度:500px;
}
.text区域\复制\代码,
.text区域\复制\编码{
位置:绝对位置;
顶部:60px;
左:180像素;
字号:600;
文本转换:大写;
字体大小:10px;
}
#跟踪html{
最大宽度:500px;
}

将代码复制到剪贴板
复制到剪贴板
你好,这是密码
您可以执行以下操作:

var pixelCodeTextarea=$(“#跟踪_html”),
textareaCopiedText=$(“#像素_textarea_copy”),
textareaCopiedText2=$(“#像素_textarea_copied”),
textareaWrapper=$(“#像素_textarea_wrapper”);
textareaWrapper.mouseenter(函数(){
if(textareaCopiedText2.hasClass('hidden')){
textareaCopiedText.removeClass(“隐藏”);
css('background-color','#f1f8fb');
}
}).mouseleave(函数(){
textareaCopiedText.addClass('hidden');
css('background-color','transparent');
});
pixelCodeTextarea.on('单击',函数()){
textareaCopiedText.addClass('hidden');
css('background-color','#bbcadc');
textareaCopiedText2.removeClass(“隐藏”);
setTimeout(函数(){
css('background-color','transparent');
textareaCopiedText2.addClass('hidden');
}, 1500);
}); 
。隐藏{
显示:无;
}
.textarea_包装器{
位置:相对位置;
最大宽度:500px;
}
.text区域\复制\代码,
.text区域\复制\编码{
位置:绝对位置;
顶部:60px;
左:180像素;
字号:600;
文本转换:大写;
字体大小:10px;
}
#跟踪html{
最大宽度:500px;
}

将代码复制到剪贴板
复制到剪贴板
你好,这是密码

以@Albzi为例是可行的,但当鼠标在单击后从未离开文本区域时,您是否希望“将文本复制到剪贴板”再次出现

像这样:

var pixelCodeTextarea = $("#tracking_html"),
textareaCopiedText = $('#pixel_textarea_copy'),
textareaCopiedText2 = $('#pixel_textarea_copied'),
textareaWrapper = $('#pixel_textarea_wrapper'),
onTextarea = false;

textareaWrapper.mouseenter(function() {
        onTextarea = true;
        if(textareaCopiedText2.hasClass('hidden')) {
      textareaCopiedText.removeClass('hidden');
      pixelCodeTextarea.css('background-color', '#f1f8fb');
    }
}).mouseleave(function() {
    onTextarea = false;
    if(textareaCopiedText2.hasClass('hidden')) {
    textareaCopiedText.addClass('hidden');
    pixelCodeTextarea.css('background-color', 'transparent');
  }
});

pixelCodeTextarea.on('click', function() {
  textareaCopiedText.addClass('hidden');
  pixelCodeTextarea.css('background-color', '#bbcadc');
  textareaCopiedText2.removeClass('hidden');

  window.setTimeout(function() { 
    pixelCodeTextarea.css('background-color', 'transparent'); 
    textareaCopiedText2.addClass('hidden');
    if (onTextarea) {
        textareaCopiedText.removeClass('hidden');
      pixelCodeTextarea.css('background-color', '#f1f8fb');
    }
  }, 1500);
});

问题来了:

我无法理解你的问题。小提琴演奏得很好,没有任何重叠。我遗漏了什么吗?单击然后重新输入文本框@hunzaboy您有两个div显示在同一位置,但完全独立显示/隐藏。我建议在显示第一个文本时只隐藏第二个文本:或者,在您即将显示第一个文本时,检查第二个文本当前是否正在显示(我相信已经提供了答案)。