5

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

在我的咖啡脚本中,我试图在点击此关注时编写函数,我试图发送一个 ajax 调用。

当我写喜欢

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

Console.log 有时会与类“ui-btn-text”一起打印,有时会与“ui-btn-inner”类一起打印。

但是在我的咖啡脚本函数中,我实际上需要从标签中获取属性。如何进行此操作

4

2 回答 2

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 元素。

换句话说,它是实际被点击的东西。currentTarget和将delegateTarget是事件绑定的事物。使用closest可能是过度的,您通常会使用它来将 DOM 上升到一个容器,该容器包含您正在与之交互的多个项目。

于 2012-05-16T07:44:46.053 回答
-1

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

...
  clickedEl = $(event.target)
  parentLink = clickedEl.parentsUntil $("a.follow")
  console.log(parentLink)
于 2012-05-16T07:43:41.090 回答