点击后,我需要获取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>
这是因为在CoffeeScript中之间的细微差别的=>
和->
在JavaScript中,this关键字的动态范围是指当前函数所附加的对象。如果将函数作为回调传递或将其附加到其他对象,则该函数的原始值将丢失。如果您不熟悉此行为,则此Digital Web文章会很好地概述这些怪癖。
所述脂肪箭头=>可用于既定义一个函数,并且将其绑定到的这个当前值,就在点。当使用基于回调的库(例如Prototype或jQuery)来创建传递给每个迭代器的迭代器函数或用于绑定的事件处理函数时,这很有用。使用粗箭头创建的函数可以访问在其定义位置的this的属性。
这就是为什么this
绑定到窗口。
您应该使用:
$('.menu a').click (event) ->
event.preventDefault()
console.log($(this).attr('href')) # it returns the link !
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句