无法在ajaxComplete中按名称访问函数?

时间:2017-01-24 16:05:43

标签: jquery ajax

我有一个在$(准备好)中正常工作的功能:

var externalLink = $("a[href*='/domain.com'], a[href*='.domain.com']");
function externalLinkFix(){
    if((externalLink).hasClass("foo")) {
        $(externalLink).removeClass("foo").addClass("bar").off('click');
    } else {
        $(externalLink).addClass("bar");
    }
}

$(function(){
    externalLinkFix();
});

但是,当我在ajaxComplete调用中调用它时,它什么都不做。

$( document ).ajaxComplete(function(){
    externalLinkFix();
});

我必须在ajaxComplete中包含函数内容。为什么我不能通过名称访问函数本身?

$( document ).ajaxComplete(function(){
    if((externalLink).hasClass("foo")) {
        $(externalLink).removeClass("foo").addClass("bar").off('click');
    } else {
         $(externalLink).addClass("bar");
    }
});

1 个答案:

答案 0 :(得分:1)

尝试使用ajaxComplete以这种方式确保项目在绑定之前就已存在

$( document ).ajaxComplete(function( event, xhr, settings ) {
  if ( settings.url === "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
      xhr.responseText );
  }
});