多次触发主干点击事件
Backbone click event being fired multiple times
本文关键字:事件 更新时间:2023-09-26
我看到了很多关于这方面的问题,但没有人解决我的问题。
我有一个带有主div
的页面,默认情况下它有一个div
one-image
。还有一个按钮,您可以添加其他div
s。因此,我有一个事件click
,它在其他div
模板上添加了一个"删除"按钮。像这样:
图像堆栈
<div class="image-stack">
<div class="one-image">
...
<a id="addImage">Add another image</a>
...
</div>
</div>
图像模板
<script type="text/template" id="another-image-template">
<div class="one-image">
...
<a id="addImage">Add another image</a>
<a id="removeImage">Remove image</a>
...
</div>
</script>
查看
events: {
'click #addImage' : 'addAnotherImage',
'click #removeImage' : 'removeThisImage'
},
addAnotherImage: function(e) {
var another = $('#another-image-template').html();
$('.images-stack').append(another);
},
removeThisImage: function(e) {
$(e.currentTarget).closest('.one-image').remove();
}
这很好用。当我点击"添加"按钮时,它在最后一个下面添加了一个新的one-image
div
;当我点击"删除"按钮时,它会删除我点击的div
。如果我更改视图并返回到同一视图(始终使用Backbone中的new
创建),则image-stack
只有一个div
one-image
,这很好。但是,当我单击"添加"按钮时,它会附加两个one-image
div
s。如果我重复前面的步骤,它会添加三个。
我已经检查过了,函数被调用了两次(三次左右…)。我不明白为什么会发生这种情况,因为remove()
正在从DOM中删除对象,而我总是用new
初始化view
。有什么想法吗?
您的问题可能与未关闭和取消绑定视图有关。它被称为僵尸视图。通过调用this.remove()
和this.off()
应该会清除对视图的所有引用。
看看以下内容:
this.remove()
-http://backbonejs.org/#View-删除this.off()
-http://backbonejs.org/#Events-关闭
和
- https://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/
- 主干僵尸视图&良好做法
- 防止主干僵尸视图
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- $window.ga在AngularJS事件中未定义
- cron作业与Javascript计时事件
- ng更改事件不适用于Dropdown