如何制作简单的延迟JQuery语句的成功
How to craft simple defer on success of JQuery statement
我正在尝试制作一种简单的方法来推迟后续的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"deferred"answers"when"操作符似乎在我在网上找到的例子中茁壮成长;这是通过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测试通过,因为设置一个变量将总是传递真值给条件,所以执行if(cache[url] = $.load())将总是计算相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 尽管链接成功并已成功下载,但未找到NPM模块
- 自动修复”;语句前缺少分号“;
- 在另一个函数成功结束后调用该函数
- 在ajax成功后,cluetip不适用于首次点击活动元素
- 如何在 API 调用后和 if 语句中启用提交按钮
- 是“;x==a||b”;以及“;x==a||x==b”;JavaScript中的等效语句
- 带有多个elseif的Javascript if语句
- jQuery成功函数中的ajax成功函数
- 这个条件语句的逻辑有问题
- Sharepoint JScript if语句未执行
- 为什么继续;语句冻结浏览器
- Javascript:If-then语句在函数中不起作用
- 如何从 jQuery.ajax 成功语句推送父对象
- 如何在 ajax jquery 中编写成功语句以更改单选按钮
- 如果语句显示成功与角度
- 如何制作简单的延迟JQuery语句的成功
- 如果语句不能在ajax内工作成功
- ajax成功的If /else语句