如何仅在 jquery 可见时才在几秒钟后淡出元素

How to fadeout an element after a few second only when it is visible with jquery

我正在尝试使用以下代码在几秒钟后淡出一个元素

if(jQuery('.invalidcontent_wrapper').is(':visible')){
     var xSeconds = 4000; 
     setTimeout(function() {
     jQuery('.invalidcontent_wrapper').fadeOut('fast');
  }, xSeconds);
 };

但是它有一个错误,当点击到下一次时,当它打开时它隐藏了quickly.How我可以以某种方式清除秒数并仅在显示元素时执行此操作?

尝试在用户再次点击时清除timeout

var xSeconds = 4000; 
var timeOut = 0;

jQuery("#someClick").click(function(){
  var elem = jQuery('.invalidcontent_wrapper');
  if(elem.is(':visible')){
   clearTimeout(timeOut);
   timeOut = setTimeout(function() {
     elem.fadeOut('fast');
   }, xSeconds);
  }
});