1

我试图让jGesturesBackbone.js应用程序一起工作,但运气不佳。

我在页面正文的底部包含了我的脚本。

<script type="text/javascript" src="jquery-1.7.2.js"></script>

<script type="text/javascript" src="jgestures.min.js"></script>

<script type="text/javascript" src="underscore.js"></script>
<script type="text/javascript" src="backbone.js"></script>
<script type="text/javascript" src="backbone.localStorage.js"></script>

<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>

<script type="text/javascript" src="src/app_root.js"></script>
<script type="text/javascript" src="src/app_beverage.js"></script>
<script type="text/javascript" src="src/app_order.js"></script>
<script type="text/javascript" src="src/app_people.js"></script>
<script type="text/javascript" src="src/app_router.js"></script>

并像这样附加手势处理程序。

events: {
    "tapone .test": "something"
}

我知道事件处理程序已正确附加,因为我可以通过控制台手动触发它(在桌面上,而不是在移动设备上)。

$(".test").trigger("tapone");

但是在 iOS 5 中运行代码,看起来 jGestures 代码没有生成触摸事件。我需要做其他人来触发这些触摸事件吗?我正在使用主干路由器,所以也许我需要在更新 DOM 后再次初始化库?

4

1 回答 1

0

Backbone.View.events直接委托jQuery.bindjQuery.delegate查看Backbone.View.delegateEvents 的代码

因此,如果您的事件绑定定义可以像这样工作:

$(<your View.el DOM element>).delegate(selector, eventName, method);

然后它应该与 Backbone 一起使用。

例如,在您的情况下,您可以尝试:

$(<your View.el DOM element>).delegate( ".test", "tapone", function(){ console.log( "hi! tapone" ); } );

尝试直接在 jQuery 中定义事件绑定,看看是否以这种方式触发事件,如果没有,则问题出在 Backbone,如果确实如此,则问题应该出在您的实现中。我认为无论哪种情况,问题都出在 Backbone 本身。

于 2012-08-04T10:24:13.770 回答