【发布时间】:2012-11-07 08:59:23
【问题描述】:
我们有一个“实用程序”js 函数,该函数包含在我们网站的多个 js 文件中,因此为了减少代码重复,我们将其移至实用程序文件并修改所有 js 文件以在将其与 getScript 一起使用之前加载它.这在大多数情况下都有效,但是使用 livequery 的一段代码会出错。
我在需要使用新功能的地方成功使用的代码:
$.getScript("js/utilities.js", function(){
... use parseQueryString function ....
});
之前的代码:
$('.preview')
.livequery(function(){
$(this).attr('rel','myPage.cfm?' + parseQueryString($(this).attr('rel')));
});
基本上,每当场景中出现具有“预览”类的元素时,我们都希望解析 rel 属性并将其替换为新解析的字符串。
之后的代码:
$('.preview')
.livequery(function(){
var preview = $(this);
// load utilities.js so that we can access the parseQueryString function
$.getScript("js/utilities.js", function(){
preview.attr('rel','myPage.cfm?' + parseQueryString(preview.attr('rel')));
});
})
问题是,这似乎在执行getScript 调用的回调之前继续到$('.preview').livequery 循环的下一次迭代。因此,preview 变量在我们可以用适当的值替换它的 rel 属性之前被重置。我怎样才能让它正确执行?
【问题讨论】:
标签: jquery asynchronous livequery getscript