让ajaxComplete特定于一个请求

时间:2012-09-07 18:05:25

标签: jquery ajax

我将.ajaxComplete绑定到链接点击事件,我只需要触发一次。

$(document).delegate('.links', 'click', function(evt) {
    evt.preventDefault();
    var origanalUrl = $(this).attr('href');
    var hrefRegEx = /^(^\/?{[A-Za-z\_]*\/?)?([A-Za-z\_]+)(\.php)$/
    var hashUrl2 = origanalUrl.replace(hrefRegEx, '$2');
    var hashUrl = '#' + hashUrl2;
        var urlExt = ' #ajaxTarget';
        var newUrl = origanalUrl + urlExt;
        if(!$(hashUrl).html() && hashUrl != '#index') {
            $(hashUrl).load(newUrl).ajaxComplete(function(event, XMLHttpRequest, ajaxOptions) {
                newMain = $(hashUrl);
                newHeight = newMain.outerHeight();
                alert(newHeight);
                $('#textBox_main').animate({
                    height: newHeight
                    }, 500, function() {
                    newMain.fadeIn(500);
                });
                oldMain = newMain;
            });
        } else {
            isLoaded = true;
        }

第一次点击很好,但每次额外点击都会在下一次ajaxComplete调用中堆叠。我该如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

您正在将回调附加到元素$(hashUrl)的'ajaxComplete'事件。 (第二次单击它,附加了另一个处理程序,依此类推)

尝试将该回调函数传递给load。像这样:

$(hashUrl).load(newUrl, function(response, status, xhr) {...} );