【发布时间】:2010-11-04 22:45:56
【问题描述】:
我正在为使用 jQuery 编写的项目构建自定义幻灯片。每个幻灯片都绑定了 4 个事件(播放、停止、下一个、上一个)。控件出现在 mouseover 和 mouseout 上。在 mouseout 上,我想要控件消失的延迟。为此,我使用了 setTimeout。
$(this).attr('timeout', setTimeout((function(obj){obj.fadeOut(250);})($(this)), 1000));
然而,这会导致“无用的 setTimeout 调用(参数周围缺少引号?)”错误
我删除了($(this)) 看看是否可以简化操作。
$(this).attr('timeout', setTimeout((function(foo){alert(foo);})('bar'), 1000));
这导致鼠标移出时警报消息框中会立即显示“bar”,或者在 firebug 中报告任何错误。我只能通过这个逻辑假设匿名函数正在立即运行,这没有给 setTimeout 稍后调用。
如果我忽略了将 $(this) 传递给匿名函数并尝试的需要
$(this).attr('timeout', setTimeout(function(){alert('foo');}, 1000));
一切都按预期工作,我一定是匿名函数的语法有问题,但我不知道它可能是什么。
谢谢
【问题讨论】:
标签: jquery parameter-passing settimeout anonymous-function