fan*_*ncy 1 javascript jquery coffeescript
就像是...
$('.foo').live 'click', ->
setTimeout (()->$(this).parent().hide()), 5000
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
James已正确诊断出问题:当你传递一个函数时setTimeout,它会在window上下文中调用(就像你调用的func那样func()).有两个很好的解决方案:
1)(最快)将细箭头更改为->胖箭头=>,将功能绑定到当前上下文,确保this函数内部具有与其this外部相同的值.然后你的代码就是
$('.foo').live 'click', ->
setTimeout (=> $(this).parent().hide()), 5000
Run Code Online (Sandbox Code Playgroud)
2)(效率最高)只需捕获您传递给的函数之一this或$(this)之外的值setTimeout.这比绑定函数的开销少.然后你的代码就是
$('.foo').live 'click', ->
$this = $(this)
setTimeout (-> $this.parent().hide()), 5000
Run Code Online (Sandbox Code Playgroud)
我$this = $(this)经常发现自己在回调的顶端写作.这是一个非常有用的成语,可以在确保顺畅的性能的同时为您节省很多麻烦.
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |