这是所有不同用法之间的更好比较:http .stop()
: //jsfiddle.net/4v8Uk/13/
<div data-one="0" data-two="0" id="a">a</div>
<div data-one="1" data-two="0" id="b">b</div>
<div data-one="1" data-two="1" id="c">c</div>
<div data-one="0" data-two="1" id="d">d</div>
$("div").hover(function(){
var d = $(this).data();
$(this).stop(d.one,d.two).toggle("slow");
});
选项 a 和 b 似乎更接近您正在寻找的内容。(0,0 和 1,0)
更新:我仍然没有一个明确的答案来解释它为什么会发生,尽管我相信它发生是因为 jQuery 看到了已经显示的元素,因此它没有显示它。为什么这不会影响 .toggle() 我不知道。
但是,您可以通过使用 .animate 重新创建动画来修复它。
http://jsfiddle.net/4v8Uk/17/
$("div").hover(function(){
var d = $(this).data();
$(this).stop(d.one,d.two).animate({"opacity":"0", "height":"0px", "width":"0px"},"slow");
}, function(){
var d = $(this).data();
$(this).stop(d.one,d.two).animate({"opacity":"1", "height":"100px", "width":"100px"},"slow");
});