2010-07-16 25 views
5

Mükemmel bir şekilde çalışan jQuery genişletilmiş bir işlev var ancak setTimout üzerinden geçirdiğimde, belirtilen süreyi beklemez ve hemen çalışır.setTimeout jquery ile çalışmadı

jQuery(document).ready(function($) {  
    setTimeout($.mainmenuslider({ 
    trigger:'close' 
    }),6000); 
}); 

Herhangi Bir Fikir ???

cevap

8

Sen geç olacaktı zaman aşımı kurmak çalışırken orada işlevini arayarak konum. Bunun yerine:

jQuery(function($) { 
    setTimeout(function() { 
    $.mainmenuslider({trigger:'close'}); 
    }, 6000); 
}); 
15

Böyle, ne istediğinizi yapmak için anonim bir yöntem kullanmak gerekir:

jQuery(function($) {  
    setTimeout(function() { 
     $.mainmenuslider({ 
     trigger:'close' 
     }); 
    }, 6000);  
}); 

Aksi takdirde sonucu işlevinin geçmesi için çalışıyoruz (Bu yürütmek yapma hemen ve daha sonra hiçbir şey yapmayın).

+0

sadece şimdi kıçımı kurtardı! teşekkürler :) bir yarış koşulunu takip ediyordu ve neden bundan kurtulmadığımı anlayamadım – Bodhi

2

Bunu Deneyin !! SetTimeout() öğesini kullanırken her zaman teklifte çağrılması gereken eylemi belirtmeyi deneyin.

Ör:

setTimeout("call_this_function()", 4000); 
+0

Bu aslında iyi bir fikir değil. Bunu yapmanın uygun yolunun örnekleri için diğer cevaplara bakın. – Pointy

+0

Bir satırın önündeki 4 boşluk, kodu biçimlendirir. Bir blok seçin ve bunu yapmak için 'ctr-k' tuşuna basın. –

+0

Fiyat teklifi için şükredin (: –