jQuery 链式事件未触发
jQuery chained events aren't firing
当我在Chrome中运行它时,"A"和"B"已成功记录,但程序永远不会达到"C"。为什么?
function doSomething(){
var chain = $.Deferred();
console.log("B");
chain.then(function(){
console.log("C");
}).then(function(){
console.log("D");
});
}
$(document).ready(function(){
$("body").click(function(){
console.log("A")
doSomething();
});
});
在过去的30分钟里,我一直在试图找到答案,但一切似乎都超出了我想要完成的任务。
你应该像这样调用 .resolve。
function doSomething(){
var chain = $.Deferred();
console.log("middle");
chain.then(function(){
console.log("end");
});
chain.resolve();
}
$(document).ready
事件在文档加载时触发,由 jQuery 处理,因此很早就调用了一个。然后,它将click
处理程序绑定到body
,当检测到点击事件时触发。这会记录"开始"并立即调用doSomething
,这会创建一个Deferred
并记录"中间"。
然而,你从来没有真正用这个Deferred
做任何事情。在解析回调时绑定回调,但从不解析回调。因此,永远不会触发回调。
返回Deferred
并调用其resolve
方法(带或不带参数(应该可以解决此问题。您可能希望稍后从超时调用它,或者立即使用事件中的参数调用它。无论哪种方式,您都需要在某个时候解决(或拒绝(承诺。
function doSomething(){
var chain = $.Deferred();
console.log("middle");
chain.then(function(){
console.log("end");
});
return chain;
}
$(document).ready(function(){
$("body").click(function(){
console.log("start")
var dfd = doSomething();
dfd.resolve();
});
});
相关文章:
- 选择onclick事件jquery
- 用于多个类事件Jquery的单个函数
- 激发滑块's幻灯片事件jquery ui
- 设置重复按钮以注册点击事件jquery
- 保留当前点击事件jquery
- 启动/停止按键事件jquery
- 在事件jquery中插入一个函数
- 删除克隆的事件JQuery
- typeahead选择事件(jQuery)的动态绑定
- 触发自定义事件 Jquery
- 绑定两次或更多次的事件 jquery
- 单击时的事件 jquery 不起作用
- 在鼠标悬停事件 jquery 上显示边框的内容
- 同时触发两个鼠标事件 jQuery
- 焦点事件 jquery 组合框/自动完成
- 如何在页面中捕获“正文”和“正文”事件[Jquery].
- 将对象传递给事件 jQuery
- 验证“取消”上的字段 单击Onbeforeunload事件JQUERY
- 复选框单击事件 jQuery 不起作用
- 口述事件jquery顺序