【问题标题】:Possible to have nested triggers?可能有嵌套触发器?
【发布时间】:2011-11-07 00:38:49
【问题描述】:

我有这段代码 sn-p 有时可以工作,但有时它会在第一次触发后停止。这可能是由于我的计算机有时运行缓慢。但理想情况下,我希望第二个触发器仅在第一个触发器完成后触发。如果能在触发事件上有回调函数就好了。。

$('#div1').fadeIn(1000, function(){
    $('#first').trigger('click');
    $('#footer').fadeIn(2000, function(){ 
         $('#second').trigger('click');
    });
});

关于如何让它更好地工作的任何建议? 如果可能的话,我还想有第三个触发器...

【问题讨论】:

  • 您可以将 footer.fadeIn 函数附加到第一个触发器。
  • 代码似乎没有任何问题。它将依次运行这四个事件,每次都等待动画完成后再继续。两个 click() 函数会发生什么?似乎是什么问题?如果 tigger('click') 函数中有动画,它不会等待这些动画完成。
  • 第二次点击事件依赖于第一次,所以如果第一次稍微延迟,代码就会中断。有时它确实有效,但有时,根据我认为的速度,第二个可能会在第一个完成之前尝试发生,但如果 div - 由 $(#first).click 加载 - 没有'没有及时满载。

标签: jquery triggers


【解决方案1】:

你就不能这样做吗:

$('#div1').fadeIn(1000, function(){
    $('#first').trigger('click');
});

$('#first').click(function() {
    $('#footer').fadeIn(2000, function(){ 
         $('#second').trigger('click');
    });
});

【讨论】:

  • 不是我的想法,这意味着必须使用全局变量和其他东西,以后会变得非常混乱。但是我明天会尝试这样的事情,以某种方式修改#first事件函数......感谢您的建议。
  • 那条评论我有点不清楚,抱歉。我只是在想像这样的解决方案如何意味着我必须修改已经编写的函数等。而我希望我可以很好地将每个触发器嵌套在同一个代码块中。
  • @grainne:您可以将其全部包装在一个匿名函数中以防止全局变量。但也许有更好的方法。为了做出正确的决定,我们需要了解您究竟拥有/想要什么。
猜你喜欢
  • 2010-12-08
  • 2012-10-23
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多