我遇到的情况是,我必须在页面上执行多个操作才能初始化其设置。我还没有任何代码,因为坦率地说,我很难找到开始的地方。
这是我想做的:
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');
});
这是如何实现的?
在你的第一个处理程序中,你可以使用一个延迟对象,在ajax成功回调中解析它并返回一个承诺,这样你就可以像这样链接你的代码(我没有测试过)
$.when(
$('#element-one').triggerHandler('click') /* asynchronous task */
).done(function() {
$('#element-two').triggerHandler('click') /* synchronous task */
...
$('#element-five').triggerHandler('click') /* synchronous task */
})
from http://api.jquery.com/category/deferred-object/
1.5 版中引入的 jQuery.Deferred() 是一个可链接的实用程序对象,可以将多个回调注册到回调队列中、调用回调队列以及中继任何同步或异步函数的成功或失败状态。
注:我用过triggerHandle()
代替trigger()
: http://api.jquery.com/triggerHandler/只是为了不知道您附加处理程序的元素。使用trigger()
以及是否适合您的需求
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)