You are calling the lengthy jQuery chain *first* and then passing its result to setTimeout. Your code is equivalent to:
var temp = $(['li.',o.hoverClass].join(''),this) .add(this) .not(not) .removeClass(o.hoverClass) .find('>ul') .css('visibility','hidden'); setTimeout( temp, 1000 ); Instead, you need to pass a *function* to setTimeout: setTimeout( function() { $(['li.',o.hoverClass].join(''),this) .add(this) .not(not) .removeClass(o.hoverClass) .find('>ul') .css('visibility','hidden'); }, 1000 ); -Mike On Thu, Dec 17, 2009 at 6:47 AM, decola <decola...@googlemail.com> wrote: > setTimeout($(['li.',o.hoverClass].join(''),this).add(this).not > (not).removeClass(o.hoverClass).find('>ul').css > ('visibility','hidden'), 1000); >