1

我遇到了一个非常奇怪和令人沮丧的问题——我在我的主干.js 应用程序的视图中编写了一个 .click() 事件(第一次编写一个),它成功地在每个桌面浏览器中触发,但它不会在 iPad 上工作。

代码是这样的:

if (something) {
 $('a.link').click();
} else {
  // do something else
}

我不知道为什么会这样。我正在使用backbone.js,如果这意味着什么的话,还有backbone.touch.js。为此,我已经把头撞在墙上好几个小时了。任何人都可以帮忙吗?

4

1 回答 1

3

尝试使用自定义事件而不是模拟点击:

要在主干对象中触发自定义事件,只需触发它。例如,在您的模型中:

this.trigger('click:navitem');

然后,您在哪里监听这些事件,例如在附加到该模型的视图中:

this.listenTo(this.model, 'click:navitem', doFunc);

其中 doFunc 是您的处理程序的名称。

这是一个jsfiddle演示。该示例是人为设计的,因此它可能与您的应用程序的结构不匹配,但重点是演示触发和侦听自定义事件。在这个示例中,我只是在同一个视图中完成了所有操作,但事件触发的来源可以是模型或集合,只要您正在侦听这些事件的位置可以引用事件的发起者。它本质上是骨干网对 pub/sub 的实现,当然,它可以在骨干网之外使用 jquery、pubsub 或各种其他库实现,但是您可以从骨干网免费获得它。

于 2013-03-08T22:15:02.680 回答