gpt4 book ai didi

javascript - 如何在 JQuery 语句成功时制作简单的延迟

转载 作者:行者123 更新时间:2023-11-30 16:34:38 24 4
gpt4 key购买 nike

我正在尝试设计一种简单的方法来推迟后续的 JQuery/JavaScript 代码执行,直到执行此语句并且变量 cache[url] 将对象返回给它之后 .load() 运算符:

cache[url] = $('<div class="bbq-item"/>').appendTo('.bbq-content').load(url);

此语句出现在 hashchange 监听器函数的中间:

$(window).on( 'hashchange', function(e) {
etc.

...而且我无法将依赖于 .load() 成功的代码移到它之外。

它不依赖于外部 PHP、JSON 或任何典型的 AJAX“延迟”和“何时”运算符似乎在我在网上找到的示例中蓬勃发展的东西;这是通过 Javascript/JQuery 进行的纯 DOM 查询和操作。

我已经尝试通过将它包装在一个简单的“if”子句中来包装需要遵循它的代码(并且取决于它的成功),如下所示:

if (cache[url] = $('<div class="bbq-item"/>').appendTo('.bbq-content').load(url)) {
[...code that is dependent on success of the .load()...]
}

...但这并不总是有效,因为在某些情况下加载时间似乎比评估时间长。

实现这一目标的最佳策略是什么?

最佳答案

根据位于此处 (http://api.jquery.com/load/) 的文档,您可以将回调函数 .load( url [, data ] [, complete ] ) 传递给 load 然后调用它,这样它就会像这样:

 $('<div class="bbq-item"/>').appendTo('.bbq-content').load(url, function(responseText, textstatus){
cache[url] = responseText;
if(textStatus === "success" || textStatus === "notmodified"){
[...code that is dependent on success of the .load()...]
}
});

编辑:这是您可以获得的最接近的值,因为加载总是将某些内容返回到缓存 [url] 中...否则您将不知道它是否成功。

请注意:您将始终通过 if 测试,因为设置变量将始终将 truthy 传递给条件,因此 if(cache[url] = $.load()) 将始终评估

关于javascript - 如何在 JQuery 语句成功时制作简单的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32877535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com