2012-05-25 17 views
0

我在與一段腳本,其去除的時間的對象X量麻煩它已經變得「隱藏」setTimout螺絲了可變的JavaScript

selector = getselector($(this).parent().parent()); 
console.log("Clicked Cancel"); 
$(this).parent().parent().addClass('hidden'); 
setTimeout(function() { 
    $(selector).remove(); 
}, 400); 

我編輯一些一段腳本從here後級由於$(this)在setTimeout內不起作用,所以使得函數getselector成爲可能。 現在這段代碼可以工作,只要你不要再快速運行它。 問題似乎是可變選擇得到弄糟,當另一個節點獲取時間跨度(400毫秒目前)

中刪除,我不認爲它周圍的一個簡單的方法。 :(

回答

1

答案很簡單:不要讓selector全球性的,即使用var哦,只是存儲的元素,而不是試圖建立一個選擇:

var elem = $(this).parent().parent(); 
elem.addClass('hidden'); 
setTimeout(function() { 
    elem.remove(); 
}, 400); 
+1

爲什麼我不能這麼想...謝謝:) – Gelunox

-1

設置一個變量的值在動作開始時,檢查它是否爲false,然後將其設置爲false,然後將其設置爲false,如果點擊太快,它會檢查變量,再次看到它是真實的,將再次執行此操作

1

您還可以按以下方式對刪除操作進行排隊,這會使您的代碼更加棘手:

$(this).parent().parent().addClass('hidden').delay(400).queue(function() { 
    $(this).remove(); 
});