jQuery live chain events点击:show(回调)没效果 - bug?

时间:2013-01-28 04:07:04

标签: jquery callback live show

我正在努力使用这段代码,无法理解这是一个错误还是错误的编码?!非常感谢任何帮助。

$('.showDiv').live({
  click: function () {
    $('#myDiv').show(function () {
      // DO SOMETHING AFTER SHOW DIV COMPLETES
      // THE PROBLEM IS THAT I CAN'T MAKE DIV SIMPLY SHOW WITHOUT EFFECT!
    });
  }, mouseenter: function () {
    // ...
  }, mouseleave: function () {
    // ...
  }
});

链事件都运行良好(点击:,mouseenter:,mouseleave :)但是$('#myDiv').show(function () {...}总是用默认的'swing'执行show,这会弄乱我需要的东西 - 只显示没有效果的div没有延迟!

奇怪的是,如果我不使用任何回调函数,只需$('#myDiv').show();我想要的div显示 - 立即且没有效果......我想知道这是不是一个错误?

我在节目中尝试使用ar $('#myDiv').show(100, function () {...}$('#myDiv').show(0, '', function () {...},但div总是显示出摆动效果。

注意:由于live会被折旧,我也尝试使用.on(),但结果完全一样。

任何帮助或提示? 谢谢。

3 个答案:

答案 0 :(得分:3)

不要将任何参数传递给.show()as documented,并且正如您的实验所揭示的那样。

  

没有参数,.show()方法是显示元素的最简单方法...匹配的元素将立即显示,没有动画。

答案 1 :(得分:1)

你应该切换到.on,但这与它无关。

如果查看.show的文档,您会发现没有任何形式的方法将回调作为第一个参数。

如果您不想要完成任何动画,那么由于操作立即完成,因此没有理由进行回调。如果在异步动画完成后需要它进行回调,那么它才有意义。

如果真的想要,你可以使用.show(0, function () { ... }),但这实在没用。

答案 2 :(得分:-1)

  

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。

检查jQuery .on documentation

<强>更新

$('.showDiv').live({
 click: function () {
   $('#myDiv').show(0,function () {
  // pass duration parameter first. 0 milisec 
  alert('myDiv is visible.');
});
 }, mouseenter: function () {
// ...
 }, mouseleave: function () {
// ...
 }
});