2011-11-21 25 views
19

tengo este sniplet de código en jQueryllamada setTimeout Inútil (entre comillas argumento que falta?)

$element.parent().children().last().hide().show('slide', {direction : 'left'}, 700, function() { 
    $element.delay(2000, function() { 
     $element.parent().children().last().hide('slide', {direction: 'left'}, 700);    
     reload_table(question_number); 
     //delay ends here 
    }); 
}); 

delay se declara como:

jQuery.fn.delay = function(time,func){ 
    return this.each(function(){ 
     setTimeout(func,time); 
    }); 
}; 

Ahora me sale el error:

useless setTimeout call (missing quotes around argument?)

FF3.x, Firefox 6+ está bien. Alguna idea sobre eso? ¿Por qué podría estar pasando esto?

Respuesta

7

Ya existe un método jQuery delay y espera una cadena (queueName) y no una función como parámetro. Elija otro nombre para su método de demora para evitar conflictos.

+0

siento decirlo pero eso no lo solucionó – kosta5

+16

¿Por qué esta es la respuesta aceptada, si esto no lo solucionó? –

+2

es un misterio ... – Tebe

-2

El problema estaba en Firefox 3. No está manejando algunos elementos adecuadamente => se omite por completo en el árbol y se ignoran -> ahí mi problema original

+5

Muy inútil y respuesta no descriptiva. – Cyprus106

7

Sólo como referencia si alguien tropieza con esta pregunta y es buscando una posible respuesta. Recibí exactamente el mismo mensaje de error que el póster inicial porque estaba mezclando el orden de los argumentos setTimeout.

Este:

setTimeout(25, function(){ 
    spotlight.intro.find('#intro').ellipsis(); 
}); 

... me dio el mensaje de error. He cambiado la función para esto:

setTimeout(function(){ 
    spotlight.intro.find('#intro').ellipsis(); 
}, 25); 

Y mi problema fue resuelto.

17

que tiene el mismo error cuando escribí

setTimeout(updateStatus(), 5000); 

en lugar de

setTimeout(updateStatus, 5000); 
+0

¡OP ya está llamando al método correctamente! este no es el problema. Él ya está pasando un puntero a una función, en el primer argumento. – gcb

10

Estoy de acuerdo con wsbaser. Tuve la instancia adicional necesario para pasar información a la función, y por simplicidad acostumbrado:

setTimeout(function(){ updateStatus(myData) } , 5000); 

El argumento debe ser una función y no una función que se llama. Firefox captó este error, Chrome lo dejó ir.

Cuestiones relacionadas