jQuery函数完成后发出警报

时间:2013-11-10 18:48:21

标签: javascript jquery

我正在努力弄清楚如何在前一个脚本(a glossary word replacement script)完成后才能显示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>

我真的无法弄清楚这一点。我很感激任何帮助

2 个答案:

答案 0 :(得分:1)

我之前从未使用过这个词汇表插件 - 但是我下载了源代码,我发现问题显然是因为词汇表插件在异步下载JSON数据后没有提供任何回调。任何非hacky的解决方案都需要对库本身稍作修改。

Here is a quick way you could do it

添加此行

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

success: function(data) {

的末尾

然后你的代码就是这样:

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

这与您的上一个示例类似,只是它将回调放入一个选项JSON,这是插件所期望的。

答案 1 :(得分:0)

我不知道什么是“词汇表”,但你可能会找到一个由jQuery api提供的Deferred对象的解决方案。延迟有助于处理json调用,尤其是 .done()方法,以便在调用完成时设置caalback。