我们有一个“实用程序” 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')));
});
})
问题是,这似乎是$('.preview').livequery
在执行调用回调之前继续循环的下一次迭代getScript
。因此,preview
在我们用适当的值替换它的 rel 属性之前,变量会被重置。我怎样才能让它正确执行?