我试过解除click事件的绑定,但它有时会触发两次,有时会触发5次!现在有点受够了!
来自modal.asp
的代码
$("input[name=add_associate]").live("click",function(){
var addassociateID = $(this).attr("id")
$.ajax({
type: 'POST',
url: '/data/watchlist_save.asp',
data: {m : 'share_watchlist_add', watchListID : <%=WatchListID%>, a : addassociateID},
async:true,
success: function(data) {
$(".associate_users").load("/data/sub_watch_members.asp?watchListID=<%=WatchListID%>",
{cache:false},function() {
$(".search_note").html(data)
$(this).unbind('click').bind('click',handler);
})
},
error: function(data){
$(".search_note").html(data)
}
});
})
更新
基本上,我将以下代码调用到.associate_users
中
<div id="associate_list">
<div class="associate_record">
<div class="left" style="padding:8px;"><img src="../imgs/nopic-m.png" style="width:30px;height:30px;" class="img_border" /></div>
<div class="left" style="padding-top:15px;">5)Neil Burton</div>
<div class="right" style="padding-top:10px;margin-right:5px;"><input type="button" class="btn-blue" name="add_associate" id="890" value="Add"></div>
<div style="clear:both;"></div>
</div>
<div style="clear:both;"></div>
</div>
更多信息
只有当我触发事件,关闭模式对话框,然后使用不同的watchListID
重新打开它时,才会发生这种情况
数据结构:
发布于 2011-05-31 23:34:34
我现在已经解决了这个问题,我正在使用
$(document).ready
在加载的ajax内容中...
<script src="/js/jquery-ui.js"></script>
所以我假设它是"live“函数的两倍!
非常感谢您的回复。
发布于 2011-05-25 16:21:23
注意你的分号,确保每个命令都以分号结尾,这样以后就不会头疼了。
对于live()
绑定的事件,必须通过调用die()
来解除绑定。它具有与unbind()
相同的参数。看一看documentation。
function ajaxHandler(){
var addassociateID = $(this).attr("id");
var $this = $(this);
$this.die('click');
$.ajax({
type: 'POST',
url: '/data/watchlist_save.asp',
data: {m : 'share_watchlist_add', watchListID : <%=WatchListID%>, a : addassociateID},
async: true,
success: function(data) {
$(".associate_users").load("/data/sub_watch_members.asp?watchListID=<%=WatchListID%>",{cache:false},function(){
$(".search_note").html(data);
$this.bind('click',handler);
});
},
error: function(data){
$(".search_note").html(data);
$this.live('click', ajaxHandler);
}
});
}
$("input[name=add_associate]").live("click", ajaxHandler);
编辑:忘记添加一些要点。就像@stefan建议的那样,你必须在点击处理程序中取消绑定实时事件,并在出错时重新绑定它。
还要确保将this
对象保存在一个变量中,因为它没有指向ajax回调函数中的DOM元素。或者,您可以在ajax请求上使用context
属性,检查documentation。
发布于 2013-07-26 14:24:10
正如我所看到的,你所要做的就是绑定事件一次,然后终止它。最新的jQuery版本有一个.one()方法,它只绑定事件一次。
示例:
$('#myDiv').one('click', function() {
alert('clicked once...');
});
下次单击时,单击事件将不会触发。
更多信息请访问http://api.jquery.com/one/
https://stackoverflow.com/questions/6120943
复制相似问题