只执行一次jQuery ajax查询

时间:2010-10-15 22:26:27

标签: javascript ajax jquery

如何让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()事件,但我不确定在哪里!

感谢您的帮助!

3 个答案:

答案 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;
});