如何让jQuery只进行一次ajax查询?
现在,每当用户切换“评论(X)”
时,它就会联系服务器// Replies - Toggle display of comments
$('.info .reply').click( function() {
$('.reply', this.parentNode.parentNode).toggle();
return false;
});
// Load comments
$('.info .reply', this).mousedown( function() {
var id = $('form #id', this.parentNode.parentNode).val();
$.ajax({ url: location.href, type: 'post', data: 'id=' + id, dataType: 'json',
success: function(data) {
for (var i in data) {
// Do AJAX Updates
}
}
});
return false;
});
我想我可以在加载ajax数据之后以某种方式在这里放置一个unbind()事件,但我不确定在哪里!
感谢您的帮助!
答案 0 :(得分:5)
在for循环之后的success
函数中,这似乎是一个好地方。
success: function(data) {
for (var i in data) {
// Do AJAX Updates
}
$('.info .reply').unbind();
}
编辑:只有你真的必须这样做,.one()似乎是一个更好的选择。
答案 1 :(得分:4)
也许您正在寻找one()
答案 2 :(得分:1)
如果我是你,我会用$.data
:
// Load comments
$('.info .reply', this).mousedown( function() {
var id = $('form #id', this.parentNode.parentNode).val();
if (!$.data(this, 'commentsloaded')) {
$.ajax({ url: location.href, type: 'post', data: 'id=' + id, dataType: 'json',
success: function(data) {
for (var i in data) {
$.data(this, 'commentsloaded', true);
// Do AJAX Updates
}
}
});
}
return false;
});