setTimeout双击问题

问题描述:

在我的表格中,我想单击一行。当该行被点击时,它会上下扩展。为了显示展开的内容,我需要位置相对和所选行更高的z-index。setTimeout双击问题

当我再次单击该行以折叠它时,它会落在其他行的后面,因此我需要延迟删除较高的Z-index和位置设置。

我已经玩过.delay,似乎只适用于动画功能而不是CSS函数。我尝试使用css函数队列,但也失败了。

最接近我成功的是下面的代码,但是,由于某些原因,它需要我双击折叠行而不是单击。我做错了什么?谢谢

$(".expanding").toggle(
    function(){ 
     $(this).animate ({ 
      'z-index': '9999', 
     }, 1) 
     $(this).css({ position: 'relative'}); 
     }, 
     function() { 
     $(this) = setTimeout((function() { 
      $(this).animate ({ 
       'z-index': '0',  
      }) 
      $(this).css({ position: 'static'}); 
     }), 500); 
    }); 

编辑;另外,在任何人提到它之前,我都不能使用toggleClass作为这一部分。

EDIT2:正如@charlietfl指出的那样..“'this'在setTimeout中丢失了元素的上下文”..我重置了这个并修复了我的问题。

+4

'$(this)= setTimeout(...);'你期待它做什么? – 2014-10-19 13:22:26

+1

你能设置一个http://jsfiddle.net让我们自己尝试吗? – Niklas 2014-10-19 13:28:15

+1

'toggle(Fn,Fn)'已弃用。你使用的是什么版本的jQuery? setTimeout中的'this'丢失了元素 – charlietfl 2014-10-19 13:29:13

正如@charlietfl指出的那样。“'this'在setTimeout内部失去了元素的上下文”..我重置并修复了我的问题。