首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spine.js中停止超链接事件

在Spine.js中停止超链接事件
EN

Stack Overflow用户
提问于 2011-12-12 08:29:21
回答 2查看 412关注 0票数 1

我在一个类似CoffeeScript的Spine.js控制器中定义了一个事件:

代码语言:javascript
复制
class Charter extends Spine.Controller
    events:
        'tap    #update':   'update'

    constructor: (params) ->
        super

    update: (e) ->
        dosomething()
        false

当单击#update链接时,会调用update函数,但该链接也会被激活,并将浏览器定向到URL。

我尝试过e.preventDefault()、e.stopPropagation()和返回false,但都没有用。该事件似乎格式正确,currentTarget是#update链接,所以我想知道它是否是Spine处理事件的方式所独有的(我在Backbone.js中对此没有问题)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-20 13:02:46

在spine的touch.coffee中,以下代码是导致此错误的原因:

代码语言:javascript
复制
if $.support.touch
  $('body').bind 'click', (e) -> 
    e.preventDefault()
else
  $ -> 
    $('body').bind 'click', (e) -> 
      $(e.target).trigger('tap')

移动设备不会收到任何触发hyperlinksclick事件,或者在点击本机表单提交(iOS键盘上的go)时的提交事件。

我能找到的唯一解决方案就是根本不使用tap事件,而是使用click -即使对于移动浏览器也是如此。

显然,这并不是最优的,我渴望一个更好的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2011-12-14 07:53:59

events必须和el一起工作,但是我没有找到你的el定义。

试试这个:

代码语言:javascript
复制
class Charter extends Spine.Controller
    el: 'body'

    events:
        'tap    #update':   'update'

    constructor: (params) ->
        super

    update: (e) ->
        dosomething()
        false
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8468689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档