我有這個簡單的代碼,toggle
是一個類的所有元素thumbnail
除了一個點擊。然後在2秒後,應該添加或刪除特定的類以單擊元素,具體取決於它是否已被選中。函數不起作用 - (this)改變它的值
問題是與setTimeout
(最有可能),因爲它不會跑我的功能,即通過if else
檢查,如果點擊的元素應選擇或不選擇,然後添加/刪除selected-ser
類。
$(document).ready(function(){
$(".thumbnail").click(function(){
$('.thumbnail').not(this).toggle(2000);
setTimeout(function() {
if ($(this).hasClass('selected-ser')) {
$(this).removeClass('selected-ser');
} else {
$(this).addClass('selected-ser');
}
}, 2000);
});
});
我真的試圖尋找類似的話題已經解決了,但我不明白這是行不通的方式(這可能是功能本身是錯的,但我不知道)
非常感謝。
編輯:它似乎 this主題地址相同的問題。之前我無法搜索它,因爲我不知道問題出在「this
的擁有者」身上。因此,我將這個主題重命名爲「函數不起作用 - (這)改變了它的值。」因此,處理同樣問題的人更容易尋找它,不知道爲什麼功能不能正常工作。
謝謝
你在控制檯中得到任何錯誤? –
請創建一個jsfiddle。這個問題似乎與setTimeout裏面的setTimeout – brk
在setTimeout函數內部回調中,'this'是指窗口對象。因此,使用閉包或設置相關的上下文,例如:'setTimeout(function(){/**/}.bind(this),2000);' –