jQuery ajaxComplete езда на велосипеде - PullRequest
0 голосов
/ 18 января 2020

У меня есть код:

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

function DoSomething() {
 ...
 $.get(MyUrl, function() {
   ...
 });
 ...
}

Но событие $ .get cyclnig ajaxComplete: (

Существует какой-то способ получения HTML контента из моего URL в переменную для работы с помощью этой переменной (найти класс и содержимое) или каким-либо образом, как отключить событие ajaxComplete ТОЛЬКО для процесса с $ .get?

1 Ответ

0 голосов
/ 18 января 2020

Вы можете проверить URL запроса внутри ajaxComplete. Если это URL, который вы запросили в DoSomething, не звоните DoSomething снова:

$(document).ajaxComplete(function(_, __, { url }) {
  if (url === 'https://jsonplaceholder.typicode.com/posts/1') {
    console.log("Recursion detected, don't do anything");
  } else {
    console.log('Calling DoSomething');
    DoSomething();
  }
});

function DoSomething() {
 $.get('https://jsonplaceholder.typicode.com/posts/1', function() {
   console.log('DoSomething done');
 });
}

$.get('https://jsonplaceholder.typicode.com/posts/5');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Вы также можете установить свойство объекта опций, который вы передаете $.get, и проверить наличие этого свойства в .ajaxComplete:

$(document).ajaxComplete(function(_, __, { fromDoSomething }) {
  if (fromDoSomething) {
    console.log("Recursion detected, don't do anything");
  } else {
    console.log('Calling DoSomething');
    DoSomething();
  }
});

function DoSomething() {
 $.get({
   url: 'https://jsonplaceholder.typicode.com/posts/1',
   fromDoSomething: true
 }, function() {
   console.log('DoSomething done');
 });
}

$.get('https://jsonplaceholder.typicode.com/posts/5');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...