为什么不用这段代码:
<a href="#">Sample link</a>
<script>
setTimeout($('a').hide, 2000)
</script>
像这样工作:
<a href="#">Sample link</a>
<script>
setTimeout(function(){ $('a').hide(); }, 2000)
</script>
答案 0 :(得分:3)
关键是this
绑定到setTimeout调用中的全局对象。接下来是
setTimeout($('a').hide, 2000)
和
setTimeout(function(){ $('a').hide(); }, 2000)
会调用方法$('a').hide
,但this
的值不同(第一种情况为window
,第二种情况为$('a')
。
Here根据您调用函数的方式提供有关this
值的更多详细信息。
答案 1 :(得分:3)
表达式$('a').hide
返回jQuery的标准hide
函数,不提及$('a')
。
当您调用 $('a').hide()
作为陈述时,$('a')
将作为this
参数传递给hide
。
但是,当您将hide
函数传递给setTimeout
时,它不会调用$('a')
上的函数;所有setTimeout
d函数都在window
上调用。
答案 2 :(得分:2)
问题是this
。在JavaScript中,它是在调用绑定this
的函数时使用的点符号 - 所以在第一个示例中,您传递一个隐藏函数,它没有连接到任何特定的jQuery对象。 / p>
答案 3 :(得分:-2)
如果你想要你的代码行,你应该引用它:
setTimeout("$('a').hide()", 2000)
OR