点击后我需要获得一个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>
答案 0 :(得分:2)
这是因为=>
和->
之间Coffeescript的微妙差异
在JavaScript中,this关键字的动态范围是指 当前函数附加到的对象。如果你通过了 作为回调函数或将其附加到不同的对象, 原来的价值将会丢失。如果你不熟悉这个 行为,this Digital Web article给出了很好的概述 怪异。
胖箭头=&gt; 可用于定义函数并绑定它 到现在这个的当前价值。这很有用 使用基于回调的库(如Prototype或jQuery)进行创建 迭代器函数传递给每个或要使用的事件处理函数 与绑定。使用胖箭头创建的函数可以访问 他们定义的属性。
这就是将this
绑定到窗口的原因。
您应该使用:
$('.menu a').click (event) ->
event.preventDefault()
console.log($(this).attr('href')) # it returns the link !