我将.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调用中堆叠。我该如何防止这种情况?
答案 0 :(得分:0)
您正在将回调附加到元素$(hashUrl)的'ajaxComplete'事件。 (第二次单击它,附加了另一个处理程序,依此类推)
尝试将该回调函数传递给load。像这样:
$(hashUrl).load(newUrl, function(response, status, xhr) {...} );