我正在努力使用这段代码,无法理解这是一个错误还是错误的编码?!非常感谢任何帮助。
$('.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()
,但结果完全一样。
任何帮助或提示? 谢谢。
答案 0 :(得分:3)
不要将任何参数传递给.show()
,as documented,并且正如您的实验所揭示的那样。
没有参数,
.show()
方法是显示元素的最简单方法...匹配的元素将立即显示,没有动画。
答案 1 :(得分:1)
你应该切换到.on
,但这与它无关。
如果查看.show
的文档,您会发现没有任何形式的方法将回调作为第一个参数。
如果您不想要完成任何动画,那么由于操作立即完成,因此没有理由进行回调。如果在异步动画完成后需要它进行回调,那么它才有意义。
如果真的想要,你可以使用.show(0, function () { ... })
,但这实在没用。
答案 2 :(得分:-1)
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。
<强>更新强>
$('.showDiv').live({
click: function () {
$('#myDiv').show(0,function () {
// pass duration parameter first. 0 milisec
alert('myDiv is visible.');
});
}, mouseenter: function () {
// ...
}, mouseleave: function () {
// ...
}
});