开发者问题收集

如何从 jquery 中的文档就绪状态调用 ajaxComplete 内的函数?

2018-07-27
461

我想从文档就绪中执行 .ajaxComplete() 内的函数。

$(function() {

      $(document).on('click', '.woof_radio_label', function(e) {
        if($(this).siblings('.woof_radio_term').is(':checked')) {
          $('.page-secondary-content').removeClass('open');
          $('.page-primary-content').removeClass('close');

          $(this).siblings('.woof_radio_term_reset').click();

          refineUrl();

        } else {
          $('.page-primary-content').addClass('close');
          $('.page-secondary-content, .bottom-content').addClass('open');
        }
      });

});

$(document).ajaxComplete(function() {
  function refineUrl() {
   console.log('it works');
  }
}); 

我收到以下错误提示:

Uncaught ReferenceError: refineUrl is not defined at HTMLLabelElement. (scripts-custom.js?ver=4.9.7:15) at HTMLDocument.dispatch (jquery.js?ver=1.12.4:3) at HTMLDocument.r.handle (jquery.js?ver=1.12.4:3)

当我单击类 woof_radio_label 时,它将触发一个 ajax 事件(产品过滤器),我想在 ajaxComplete() 上调用一个函数。

你知道怎么做吗?

2个回答

您应该全局声明函数 refineUrl() ,然后可以从任何地方调用它。从 ajaxCompletedocument.ready 也可以。

例如:

$(function () {
    $(document).on('click', '.woof_radio_label', function (e) {
        if ($(this).siblings('.woof_radio_term').is(':checked')) {
            $('.page-secondary-content').removeClass('open');
            $('.page-primary-content').removeClass('close');

            $(this).siblings('.woof_radio_term_reset').click();

            refineUrl();

        } else {
            $('.page-primary-content').addClass('close');
            $('.page-secondary-content, .bottom-content').addClass('open');
        }
    });

});

$(document).ajaxComplete(function () {
    //DO another stuff
});
function refineUrl() {
    console.log('it works');
}
Lovepreet Singh
2018-07-27

在脚本顶部声明 refineUrl() 以防止出现此类错误,

function refineUrl() {
    console.log('it works');
}
$(function(){
     .....
});
$(document).ajaxComplete(function() {
   refineUrl(); 
}); 
Rohan Kumar
2018-07-27