0

我正在为这段代码苦苦挣扎,不明白这是错误还是编码错误?!任何帮助深表感谢。

$('.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 () {
    // ...
  }
});

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

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

我已经尝试在节目中使用 args,$('#myDiv').show(100, function () {...}$('#myDiv').show(0, '', function () {...}div 总是以摇摆效果出现。

注意:由于 live 会贬值,我也尝试过,.on()但结果完全相同。

任何帮助或提示?谢谢。

4

3 回答 3

3

不要将任何论据传递给.show()如记录的那样,并且正如您的实验所揭示的那样。

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

于 2013-01-28T04:10:13.987 回答
1

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

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

如果您不希望完成任何动画,则没有理由进行回调,因为操作会立即完成。如果您需要在异步动画完成后发生回调,则只有回调才有意义。

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

于 2013-01-28T04:11:23.200 回答
-1

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

检查jQuery .on 文档

更新

$('.showDiv').live({
 click: function () {
   $('#myDiv').show(0,function () {
  // pass duration parameter first. 0 milisec 
  alert('myDiv is visible.');
});
 }, mouseenter: function () {
// ...
 }, mouseleave: function () {
// ...
 }
});
于 2013-01-28T04:10:33.537 回答