2012-08-03 31 views
1

我试图获得jGesturesBackbone.js应用程序一起使用,但没有多少运气。使用Backbone.js获得jGestures特殊需求?

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

<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代码不会生成触摸事件。我还需要其他人来触发这些触摸事件吗?我正在使用Backbone路由器,因此可能需要在更新DOM后再次启动库?

回答

0

Backbone.View.events代表直接在jQuery.bindjQuery.delegate,请看Backbone.View.delegateEvents' code

所以,如果你的事件绑定定义能像这样工作:

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

那么就应该与骨干工作。

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

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

尝试定义事件jQuery的直接结合,看看做这种方式有望在触发事件,如果没有,则问题不在Backbone中,如果它确实存在,那么问题应该在你的实现中。我认为在任何情况下,问题都将出现在Backbone本身。

+0

jGestures似乎与“绑定”,但不是“委托”。我在这里做了一些尝试 - http://jsbin.com/uwoyep/1/edit - 将“绑定”与主干的工作?或者是动态生成(客户端)内容所需的“委托”? – Nippysaurus 2012-08-05 22:39:17