2015-05-02 30 views
0

在此先感謝您的幫助。我是JavaScript新手,所以我認爲我正在做一些基本的錯誤。我想'.fa'類和'.fa-bars fa-times'類之間'toggleclass'採取1秒後,我點擊'.ubermenu-responsive-toggle'作品後'.ubermenu-responsive-toggle'點擊後Javascript延遲,設置超時不起作用

肘類'.fa''.fa-bar fa times'之間單擊。我無法讓時間延遲下降。我一直在Chrome的檢查器中收到JavaScript錯誤。我會在下面進行我最好的猜測。我確定這很簡單,但正如我所說,JavaScript對我來說是一個新的領域。
再次感謝您的幫助。

jQuery(document).ready(function($) { 
    $('.ubermenu-responsive-toggle').on('click touchend' , setTimeout(function(){ 
     jQuery(this).find('.fa').toggleClass('fa-bars fa-times'); 
    }, 1000)); 
}); 
+0

它給了什麼控制檯錯誤? 'setTimeout'工作正常。見[Demo](http://jsfiddle.net/ht70kc4z/) –

回答

3

要當心與對象 「這個」 一的setTimeout或setInterval函數裏面,因爲也許不可能是t他反對,你期望,試試這個:

jQuery(document).ready(function($) { 
    $('.ubermenu-responsive-toggle').on('click touchend' , function() { 
     var $myToggles = $(this).find('.fa'); 

     setTimeout(function() { 
      $myToggles.toggleClass('fa-bars fa-times'); 
     }, 1000); 
    }); 
}); 
+0

謝謝Jose。這完成了工作。我希望有一天我能以有意義的方式爲論壇作出貢獻。 Stackoverflow是一個很棒的網站。乾杯! –

+0

幫我解決一個令人沮喪的問題,謝謝! –

1

嘗試利用​​3210,.queue()

jQuery(document).ready(function($) { 
    $(".ubermenu-responsive-toggle").on("click touchend", function(e) { 
    jQuery(this).delay(1000, "toggle").queue("toggle", function() { 
     jQuery(this).find(".fa").toggleClass("fa-bars fa-times"); 
    }).dequeue("toggle"); 
    }); 
}); 

的jsfiddle http://jsfiddle.net/pLv0n1w4/1/

1

試試這個

jQuery(document).ready(function ($) { 
    $('.ubermenu-responsive-toggle').on('click touchend', function() { 
     var that=jQuery(this); 
     setTimeout(function() { 
      that.find('.fa').toggleClass('fa-bars fa-times'); 
     }, 1000); 
    }); 
});