Coffeescript 为什么“this”要绑在窗户上?
我需要在单击后获取href值。我的代码如下所示:Coffeescript 为什么“this”要绑在窗户上?,coffeescript,Coffeescript,我需要在单击后获取href值。我的代码如下所示: $('.menu a').click (event) => event.preventDefault() console.log($(this).attr('href')) # it returns 'undefined' 我做错了什么 [已编辑] 我的html代码: <div class="menu"> <a href="/all/">All</a> </div> 这是
$('.menu a').click (event) =>
event.preventDefault()
console.log($(this).attr('href')) # it returns 'undefined'
我做错了什么
[已编辑]
我的html代码:
<div class="menu">
<a href="/all/">All</a>
</div>
这是因为=>
和->
之间的咖啡脚本有细微的差别
在JavaScript中,this关键字的作用域是动态的,表示
当前函数附加到的对象。如果你通过考试
函数作为回调函数或将其附加到另一个对象
它的原始价值将丢失。如果你不熟悉这个
行为,提供了一个很好的概述
怪癖
胖箭头=>可用于定义函数和绑定函数
到该的当前值,即现场。这在以下情况下很有用:
使用基于回调的库(如Prototype或jQuery)创建
要传递给每个的迭代器函数,或要使用的事件处理程序函数
带着束缚。使用fat箭头创建的函数可以访问
在定义它们的地方,这个函数的属性
这就是为什么此
绑定到窗口的原因
你应使用:
$('.menu a').click (event) ->
event.preventDefault()
console.log($(this).attr('href')) # it returns the link !
元素是否有href
属性?我想是的!我编辑了我的帖子。我不太熟悉CoffeeScript,但是当我添加console.log($(此))
时,它记录的是窗口,而不是我单击的a
元素。感谢帮助:)这是CoffeeScript方法箭头的问题!:)