我有一种情况,我必须在页面上执行多个操作才能初始化它的设置.我还没有任何代码,因为坦率地说,我很难找到一个可以开始的地方.
这是我想要做的:
jQuery(document).ready(function($) { $('#element-one').trigger('click'); // wait for the first trigger event to complete (it loads ajax content into a div tag) // then move on to this one... $('#element-two').trigger('click'); // then move on to this one... $('#element-three').trigger('click'); // then move on to this one... $('#element-four').trigger('click'); // then finally move on to the last one $('#element-five').trigger('click'); });
这是如何完成的?
解决方法@H_404_10@
在你的第一个处理程序中,你可以使用延迟对象,在ajax成功回调中解决它并返回一个promise,这样你就可以像这样链接你的代码(我还没有测试过)
$.when(
$('#element-one').triggerHandler('click') /* asynchronous task */
).done(function() {
$('#element-two').triggerHandler('click') /* synchronous task */
...
$('#element-five').triggerHandler('click') /* synchronous task */
})
从http://api.jquery.com/category/deferred-object/
jQuery.Deferred(),introduced in version 1.5,is a chainable utility object that can register multiple callbacks into callback queues,invoke callback queues,and relay the success or failure state of any synchronous or asynchronous function.
注意:我使用triggerHandle()而不是trigger():http://api.jquery.com/triggerHandler/只是为了与你连接处理程序的元素无关.如果它适合您的需要,也可以使用trigger()
$.when( $('#element-one').triggerHandler('click') /* asynchronous task */ ).done(function() { $('#element-two').triggerHandler('click') /* synchronous task */ ... $('#element-five').triggerHandler('click') /* synchronous task */ })
从http://api.jquery.com/category/deferred-object/
jQuery.Deferred(),introduced in version 1.5,is a chainable utility object that can register multiple callbacks into callback queues,invoke callback queues,and relay the success or failure state of any synchronous or asynchronous function.
注意:我使用triggerHandle()而不是trigger():http://api.jquery.com/triggerHandler/只是为了与你连接处理程序的元素无关.如果它适合您的需要,也可以使用trigger()