jQuery:触发.click()事件,一个接一个
问题描述:
我有一种情况,我必须在页面上执行多个操作才能初始化它的设置。我还没有任何代码,因为坦率地说,我很难找到一个地方开始。jQuery:触发.click()事件,一个接一个
这是我想做的事:
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');
});
这是如何实现的呢?
答
你的第一个处理程序中,你可以使用一个延迟的对象,解决它在阿贾克斯成功回调,并返回一个承诺,所以你会从http://api.jquery.com/category/deferred-object/链您这样的代码(我没有测试)
$.when(
$('#element-one').triggerHandler('click') /* asynchronous task */
).done(function() {
$('#element-two').triggerHandler('click') /* synchronous task */
...
$('#element-five').triggerHandler('click') /* synchronous task */
})
jQuery.Deferred(),在1.5版本中引入的,是一个可链接的公用对象,可以多个回调注册到回调队列中,调用回调队列和中继任何同步或异步函数的成功或失败的状态。
注:我用triggerHandle()
代替trigger()
:http://api.jquery.com/triggerHandler/只是为了给你附加的处理程序元素无关。如果它适合您的需求,请使用trigger()
您是否考虑过在AJAX回调中调用其他触发器? – Corbin 2012-01-26 22:46:26
为什么不创建一个在页面加载后调用的Init()函数,它会调用点击事件中调用的所有函数 – RandomWebGuy 2012-01-26 22:47:04