在jquery coffeescript中绑定click事件

时间:2012-05-16 07:21:27

标签: jquery-mobile coffeescript

我正在使用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>

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

当我写的时候

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

Console.log有时打印带有“ui-btn-text”类的span,有时会跨越“ui-btn-inner”。

但是在我的coffeescript函数中,我需要实际从标记中获取属性。如何继续这个

2 个答案:

答案 0 :(得分:11)

您可以使用event.currentTarget代替event.target

  

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

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

event.delegateTarget

  

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

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

您也可以使用closest

clickedEl = $(this).closest('a')

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

event.target值为:

  

发起事件的DOM元素。

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

答案 1 :(得分:-1)

您可以使用jQuery始终获取link元素,然后您可以参考如果您需要来自包含的跨度的信息。

...
  clickedEl = $(event.target)
  parentLink = clickedEl.parentsUntil $("a.follow")
  console.log(parentLink)