如何停止多个事件处理程序onclick的html从服务响应
How to stop multiple event handler onclick on html from servise resnonse?
我有一个div block:
<div class='btn'>click here</div>
<div class='dialogWindow'></div>
和js with click handler:
$('.btn').live('click', function(){
$.ajax({
type: "POST",
url: "services/service1.php"
}).done(function(result) {
$('.dialogWindow').empty().append(result).dialog();
// Handler for btn in HTML from service1
$('.newBtn').live('click', function(){
alert('click on new btn');
});
});
});
from service1:
<div class='newBtn'>click here</div>
当用户点击div。btn ajax从service1 HTML返回新的div.newBtn。在jQuery对话框中显示新的HTML。当用户关闭对话框窗口,并通过点击div再次打开它。btn之后点击div.newBtn =>点击div.newBtn上的事件运行两次。如何运行click-event上div.newBtn只有那些不依赖于多少次用户打开jQuery对话框窗口?????
我认为你的问题是每次你点击btn你附加一个新的事件处理程序到newBtn。
如果你在按钮上没有任何其他事件处理程序-你的代码可以在添加新的点击处理程序之前删除现有的点击处理程序(类似于这样)
$('.btn').live('click', function(){
$.ajax({
type: "POST",
url: "services/service1.php"
}).done(function(result) {
$('.dialogWindow').empty().append(result).dialog();
// Handler for btn in HTML from service1
$('.newBtn').die( "click" );
$('.newBtn').live('click', function(){
alert('click on new btn');
});
});
});
另外,我不确定你在开发哪个版本的jquery,但是。live已经被弃用很长时间了。如果可能的话,我会切换到on/off
在事件承诺之外附加处理程序可能更有效:
$('.dialogWindow').on('click','.newBtn', function(){
alert('click on new btn');
});
$('.btn').on('click', function(){
$.ajax({
type: "POST",
url: "services/service1.php"
}).done(function(result) {
$('.dialogWindow').empty().append(result).dialog();
});
});
相关文章:
- AngularJS-需要在index.html页面中访问来自服务的数据
- 从简单的html页面调用实时Web服务.
- 谷歌应用程序脚本html服务和加载谷歌地图javascript api V3
- JQuery-HTML到PDF没有'无法在IE中工作(来自C#asmx Web服务)
- 在HTML服务中验证电子表格
- 将JSON从索引操作服务到公用文件夹中的index.html
- HTML服务为图像分配URL
- 如何在URL中不指定.html、.json的情况下配置web.xml来服务任何请求
- 使用ajax将数据发布到asmx web服务并使用javascript函数在html页面中编写响应时出错
- 在异步内部函数返回 [UI-路由器和 HTML 服务] 之后返回外部 fn
- 从谷歌电子表格检索单元格日期到HTML服务
- .gs/.Google Apps 脚本作为 Web 应用,使用表单元素、HTML 服务和电子表格
- 如何从图表谷歌脚本的电子表格中检索数据.(使用 HTML 服务)
- 使用谷歌HTML服务上传文件时验证HTML输入字段
- 谷歌应用程序脚本的新功能'的HTML服务
- 谷歌应用程序脚本HTML服务-Can't get Keypress to work
- 表日期列格式化与谷歌应用程序脚本html服务
- 表单验证使用HTML服务在谷歌应用脚本
- Touchmove不能与Google apps scripts html服务一起工作
- 对象引用在HTML服务中丢失