'单击'事件在Backbone中消失.使用流沙后查看

'click' event disappears in Backbone.View after using Quicksand

本文关键字:流沙 单击 事件 Backbone 消失      更新时间:2023-09-26

模型中有一个带有事件click的"视图"。在使用jQuery的Quicksand效果插件后,对象会释放其事件处理程序。我尝试在backbone.js:中使用标准方法添加事件的侦听器

events: {
    "click .objContact"    : "openChat"
}

和相同的工具jQuery delegate:

var self=this; 
this.$el.delegate('.objContact','click', function(){
    self.openChat();
});

live:

var self=this; 
this.$el.find('.objContact').live('click', function(){
    self.openChat();
});

但是CCD_ 4事件消失。可能是什么问题?我该如何解决?

UPD:调用"Quicksand"在主干网中。路由器(可更改的是通过jQuery直接获得的,而不是主干网),因此更改不在主干网处理。查看

UPD 2:通过以下方式解决问题-将click事件的处理从View模型移动到View集合。并用处理(在on中不起作用)

简单答案:而不是使用经典的ajax方法将函数链接到链接

$('a.oldJqueryClass').click(function(){....

您需要使该函数独立,声明一个新函数

函数myfunction(params){alert(params;)}

比你用老派的方式称之为的链接

<a href="#" class="oldJqueryClass" onclick="javascript:myfunction('My alert message')">Click here</a>

通过这种方式,克隆的元素将包含对函数的调用,您可以忘记恢复因流沙的克隆而破坏的dom完整性。

我在我的项目中做到了,效果很好。

在相关DOM条目发生更改或被覆盖后,调用delegateEvents()。在传统的Backbone应用程序中,这通常是在render方法中完成的,但您可能需要弄清楚流沙在何时何地起作用——这很神奇(我对此一无所知),并调用delegateEvents,它将重新激活DOM中当前元素的事件。