我正在努力弄清楚如何在前一个脚本(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>
我真的无法弄清楚这一点。我很感激任何帮助
答案 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。