在jquery coffeescript中绑定click事件

use*_*non 5 coffeescript jquery-mobile

我正在使用rails 3.2并使用coffeescript ..我有一个疑问,在我的应用程序中使用jquery mobile我有一个html像

<a href="#" data-item=12 data-status=true class="follow">
  <span class="ui-btn-inner">
    <span class="ui-btn-text">
      Follow
    </span>
  </span>
</a>
Run Code Online (Sandbox Code Playgroud)

在我的coffeescript中,我试图点击这个函数来编写函数,我正在尝试发送一个ajax调用.

当我写的时候

  $("a.follow").unbind('click').bind 'click', (event, data) ->
      event.stopPropagation()
      clickedEl = $(event.target)
      console.log(clickedEl)
Run Code Online (Sandbox Code Playgroud)

Console.log有时打印带有"ui-btn-text"类的跨度,有时会跨越"ui-btn-inner".

但在我的coffeescript函数中,我需要实际从标记中获取属性.如何处理这个问题

mu *_*ort 11

您可以使用event.currentTarget而不是event.target:

事件冒泡阶段中的当前DOM元素.

演示:http://jsfiddle.net/ambiguous/gdzUC/

或者event.delegateTarget:

附加当前调用的jQuery事件处理程序的元素.

演示:http://jsfiddle.net/ambiguous/UhBWM/

你也可以使用closest:

clickedEl = $(this).closest('a')
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/ambiguous/2LHp3/

event.target值是:

启动事件的DOM元素.

换句话说,它实际上是被点击的东西.的currentTargetdelegateTarget将是该事件被绑定到的东西.使用closest对于此可能有点过分,你通常使用它来将DOM上升到一个容器,该容器包含你正在与之交互的几个项目.