Оповещение после завершения функции jQuery

0

Я очень стараюсь понять, как получить оповещение JS, чтобы появиться только после того, как завершился предыдущий скрипт (скрипт замены словаря слов). Получение этого javascript/jquery для запуска в порядке, дает мне головную боль, поскольку он либо заканчивается из строя, либо вторая часть не запускается вообще.

Вот код, который в настоящее время работает БЕЗ предупреждения:

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="jquery.zglossary.min.js" type="text/javascript"></script>

<script>
$(document).ready(function () {
    $('body').glossary('listofwords.json');
    //want alert('finished') to happen after glossary word replacement is finished replacing words here
});
</script>

</head>

Я пробовал много разных вещей, пытаясь получить предупреждение о том, где этот комментарий, и либо предупреждение происходит непосредственно перед заменой любых слов на скрипт zglossary, примером чего будет:

<script>
$(document).ready(function () {
    $('body').glossary('listofwords.json');
    alert('finished');
});
</script>

Или скрипт заменит все слова, и никаких предупреждений не произойдет вообще. Примером этого может быть:

<script>
$(document).ready(function () {
    $('body').glossary('listofwords.json');
}, function() {
    alert('finished');
});
</script>

Другой пример этого события (слова заменяются, но никаких предупреждений не происходит), которые я пробовал:

<script>
$(document).ready(function () {
    $('body').glossary('listofwords.json', function() {alert('finished');} );
});
</script>

Я просто не могу понять это. Буду признателен за любую помощь

  • 0
    это глоссарий плагины !!! проверить, есть ли у него функция обратного вызова и использовать это ??
  • 0
    также проверьте, запускается ли плагин асинхронно. если нет, то он все равно вернется только после того, как закончит свою работу.
Показать ещё 1 комментарий
Теги:

2 ответа

1
Лучший ответ

Я никогда раньше не использовал этот плагин для глоссария, но я загрузил источник, и я вижу, что проблема очевидна, потому что плагин глоссария не обеспечивает обратного вызова после того, как данные JSON загружаются асинхронно. Любое решение, которое не является хаки, потребует небольшой модификации самой библиотеки.

Вот быстрый способ сделать это

Добавив эту строку

typeof options.callback == 'function' && options.callback();

В конце success: function(data) {

Тогда ваш код будет просто следующим:

<script>
$(document).ready(function () {
    $('body').glossary('listofwords.json', {callback:function() {alert('finished');}} );
});
</script>

Что похоже на ваш последний пример, только он переводит обратный вызов в параметры JSON, который ожидает плагин.

  • 0
    Вы просто очень мне помогли, вы понятия не имеете. Не только для того, чтобы найти решение для этого, но и помочь мне расширить мою базу знаний. Я не просто искал ответ один, но ответил, что, зная его, я смогу решить будущие проблемы. Еще раз спасибо.
  • 0
    Вероятно, было бы лучше предоставить функцию обратного вызова в качестве третьего параметра или вернуть объект обещания, с которым вы можете работать, но, тем не менее, хороший и лаконичный обходной путь.
Показать ещё 1 комментарий
0

Я понятия не имею, что такое "Глоссарий", но вы можете найти решение с объектом "Отсрочка", предоставленным jQuery api. Отложенное помогает обрабатывать вызовы json, особенно метод.done() для установки caalback, когда вызов завершен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню