2014-10-19 224 views
-1

在我的表格中,我想單擊一行。當該行被點擊時,它會上下擴展。爲了顯示展開的內容,我需要位置相對和所選行更高的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

回答

0

正如@charlietfl指出的那樣。「'this'在setTimeout內部失去了元素的上下文」..我重置並修復了我的問題。