我正在为这段代码而苦苦挣扎,无法理解它是错误还是糟糕的编码?!任何帮助都非常感谢。
$('.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 () {
// ...
}
});