事件调用在 ajax 替换元素后多次
Event call multiple time after ajax replace element
我对Jquery事件有问题。在我用另一个元素替换该元素但类型和相同的 id 后,Jquery Event 被多次调用。
// 1. ajax call success and replace my block
// 2. This is my event that I want it happen.
$(document).on("click", ".polaroid button.addImage", function(event) {
event.preventDefault();
// trigger browse file to upload
$(event.target).closest("div.polaroid").find("input[type=file]").trigger("click");
});
此代码用于在 AJAX 成功后调用转售事件。那么,为什么在调用 AJAX 的同时多次调用事件click
button.addImage
呢?这是 html:
<div class="col-md-3 polaroid">
<img src="images/ingredient/default_img.png" title="Main image" />
<input type="file" name="file-image" style="display:none"/>
<button type="button" data-toggle="tooltip" title="Add" class="btn addImage"><i class="glyphicon glyphicon-plus icon-plus"></i></button>
</div>
您很可能再次加载此脚本或调用再次添加此事件处理程序的函数
最好的解决方法是查找再次调用此事件处理程序的位置。
解决方法是将事件命名为命名空间,并始终使用 off()
删除事件处理程序,然后再再次添加
$(document)
.off('click.polaroid')
.on("click.polaroid", ".polaroid button.addImage", function(event) {
// other code
});
使用 one()
$(document).one("click", ".polaroid button.addImage", function(event) {
谢谢。我找到了答案。即在"开"之前使用"关闭",如下所示:我更新了查利特弗先生的回答。
$(document)
.off('click',".polaroid button.addImage")
.on("click", ".polaroid button.addImage", function(event) {
event.PreventDefault();
// other code
});
相关文章:
- 只要存在,就用另一个元素替换一个元素
- 用HTML元素替换字符串的一部分
- 将父元素替换为其内容
- 单击时将SVG元素替换为另一个
- 用javascript(无jquery)将元素替换为文本
- 在不同的html文件中将html从一个元素替换为另一个元素
- 如何用另一个元素替换一个元素
- 将所有元素替换为另一个 jquery
- 使用本机 JS 将 HTML 元素替换为字符串内容
- 将 DOM 元素替换为仅开始标记(或结束标记)
- JQuery 将表单元素替换为文本
- 如何将 html 元素替换为 ajax 响应
- 将数组中的元素替换为相应的字典项 JavaScript
- JQuery:用另一组元素替换一组元素的优雅方式
- 将内容可编辑元素替换为有序列表时保持可编辑性
- 用新的克隆元素替换克隆元素
- 用新的DOM元素替换()任意文本
- 如何为没有ID的元素替换类名
- 如何使用regex将段落元素替换为新行
- 是否可以用另一个td元素替换HTML表td元素