2015-06-01 42 views
0

我不能console.log下面的消息。 setTimeout用於添加類後,hasClass無法工作?setTimeout addClass,然後檢查元素hasClass

<img id="swipeUp1" class="swipeUp" src="img/arrow.png"> 

setTimeout(function() { 
    $("#swipeUp1").addClass("moveOn"); 
}, 500); 
if ($('#swipeUp1').hasClass('moveOn')) { 
    console.log("swipeup1 has class moveOn"); 
} 

回答

1

setTimeout()處理器(含addClass()功能),因爲你要求明確到現在不執行,但在500毫秒if語句後執行。

因此,下一行(if語句)立即執行,早於addClass()

如果您希望他們按順序執行,你必須移動hasClass()內部處理程序或addClass() OUTSIDE:

// all inside handler 
setTimeout(function() { 
    $("#swipeUp1").addClass("moveOn"); 

    if ($('#swipeUp1').hasClass('moveOn')) { 
     console.log("swipeup1 has class moveOn"); 
    } 
}, 500); 

或者:

// no setTimeout at all 
$("#swipeUp1").addClass("moveOn"); 

if ($('#swipeUp1').hasClass('moveOn')) { 
    console.log("swipeup1 has class moveOn"); 
} 
+0

我的問題是,當我刷回在幻燈片中,我必須再次等待500ms,是否有辦法對它進行組織,以便在$(「#swipeUp1」)上只有1個時間延遲。addClass(「moveOn」);',而不是a延遲'if($('#swipeUp1')。hasClass('moveOn'))' – evan

+0

不確定你在問什麼,但你可以想研究jQuery的'delay()'方法。您可以鏈接動畫,暫停和功能,而無需使用setTimeout()。 – pid

+0

我成功做了兩個setTimeout函數。第一個使用'$(「#swipeUp1」)。addClass(「moveOn」);'在500ms,然後if語句的hasClass在600ms。謝謝你的幫助! – evan