0

我将 .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 调用时叠加。我该如何防止这种情况?

4

1 回答 1

0

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

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

$(hashUrl).load(newUrl, function(response, status, xhr) {...} );
于 2012-09-07T18:16:10.587 回答