j查询实时链事件点击:显示(回调)无效果 - 错误



我正在为这段代码而苦苦挣扎,无法理解它是错误还是糟糕的编码?!任何帮助都非常感谢。

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

链事件都运行良好(单击:,鼠标输入:,鼠标离开:)但是$('#myDiv').show(function () {...}总是使用默认的"摆动"来执行节目,这会弄乱我需要的东西 - 只需显示div 即可,没有效果,也没有延迟!

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

我在节目中尝试过像 $('#myDiv').show(100, function () {...}$('#myDiv').show(0, '', function () {...} 这样的 args,但div 总是以摆动效果出现。

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

有什么帮助或提示吗?谢谢。

不要将任何参数传递给.show(),正如记录的那样,以及您的实验所揭示的那样。

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

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

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

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

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

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

最新更新