我在一个类似CoffeeScript的Spine.js控制器中定义了一个事件:
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中对此没有问题)
发布于 2011-12-20 13:02:46
在spine的touch.coffee中,以下代码是导致此错误的原因:
if $.support.touch
$('body').bind 'click', (e) ->
e.preventDefault()
else
$ ->
$('body').bind 'click', (e) ->
$(e.target).trigger('tap')移动设备不会收到任何触发hyperlinks的click事件,或者在点击本机表单提交(iOS键盘上的go)时的提交事件。
我能找到的唯一解决方案就是根本不使用tap事件,而是使用click -即使对于移动浏览器也是如此。
显然,这并不是最优的,我渴望一个更好的解决方案。
发布于 2011-12-14 07:53:59
events必须和el一起工作,但是我没有找到你的el定义。
试试这个:
class Charter extends Spine.Controller
el: 'body'
events:
'tap #update': 'update'
constructor: (params) ->
super
update: (e) ->
dosomething()
falsehttps://stackoverflow.com/questions/8468689
复制相似问题