'单击'事件在Backbone中消失.使用流沙后查看
'click' event disappears in Backbone.View after using Quicksand
模型中有一个带有事件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中当前元素的事件。
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 单击F5时如何停止页面加载
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 单击jquery清除输入值
- 单击按钮以等待单击按钮
- 在单击href链接的同时下载文件
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- 使图像在单击时展开到不大于浏览器
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 如何在单击复选框后调用控制器方法
- 单击页面上的链接后高度发生变化
- 使用jquery在单击时在单元格中输入值
- 将纯文本URL转换为可单击链接
- ASP.NET通过单击JavaScript按钮触发c#事件
- 单击更改图标并通过javascript添加一个css类
- 阻止在select2单击时调用ajax
- 复制图像路径以单击它
- '单击'事件在Backbone中消失.使用流沙后查看