2

我有这个工作正常:

$('#RCH'+r).on('click',function(e){$('#RSC'+r).find('.rct,.rcp').toggle();});

不过,在所有切换结束时,我想调用一个函数rs(1);

计划 1:我尝试将回调放在切换按钮上,但一切都变得混乱。

$('#RCH'+r).on('click',function(e){
  $('#RSC'+r).find('.rct,.rcp').toggle('',function(){rs(1);});
});

rs(1)以上为类的每次出现调用该函数(如each)。它还撤消了通常发生的事情,因此如果.rcp显示并.rct隐藏,则恰好相反。因此,计划 1 让一切都在一个手提篮中化为乌有。

计划 2:我还尝试rs(1)在功能中的切换之后放置.on(如下所示)。

$('#RCH'+r).on('click',function(e){$('#RSC'+r).find('.rct,.rcp').toggle();rs(1);});

但是,此方法rs(1)在切换完成之前触发,因此该rs函数无法完成其工作。

rs(1);那么...切换完成后如何开火?

谢谢。

4

2 回答 2

3

嗯,首先,.toggle()它是即时的,所以我假设你实际上是在使用.toggle(/* some duration */). 在这种情况下,您可以传递一个在切换动画完成后调用的函数:

$('sel').toggle(/* duration */, function () {
  // ...
});

如果您实际使用.toggle()但由于某种原因存在导致代码失败的延迟,您可以尝试以下操作:

$('sel').toggle(0, function () {
  // ...
});
于 2012-04-17T10:30:17.257 回答
0
$.when($('#RCH'+r).on('click',function(e){$('#RSC'+r).find('.rct,.rcp').toggle();}))
  .done(function(){rs(1);});

试试这个,我希望这有效。

于 2012-04-17T10:34:34.550 回答