2011-11-18 149 views
0

当使用.animate()而改变top/left,单击事件似乎并不火。例如:jQuery.animate() - 点击不会触发事件

<div style="width: 640px; height: 480px; position: relative;"> 
<div id="child" onclick="alert('ok')" style="position: relative;">Some text</div> 
</div> 

随着脚本是这样的:

$('#child').animate({ top: 200, left: 200 }, 2000); 

当您单击DIV,你不会看到一个警告 - 你必须等待元素停止第一运动。 有什么方法可以解决这个问题吗? :(

编辑:我的例子是不准确的,以我的问题,对不起球员感谢您的快速解答

编辑:!一个更新的例子就是在这里,这个问题重现:http://jsfiddle.net/M9udv/8/ 另外我现在用的是最新的Chrome

再次编辑:好吧,我使用jquery.live("click", function() {});,它似乎在工作的时候我还包括$(targ).stop(true);函数内

回答

1

我相信它可以工作,但是元素周围的线框非常小,移动时很难点击。我做了这个工作(并在几个不同的浏览器测试)与一些填充的例子让用户轻松元素点击:http://jsfiddle.net/M9udv/

+0

好吧,也许我的例子不是很好。我已经更新了jsfiddle的东西,但不知道如何获得jquery的$(function());开火。 – aikeru

+0

确定问题在这里重现:http://jsfiddle.net/M9udv/8/ – aikeru

+0

我在你的jsfiddle得到这个错误:'window.dictionary.entries [word4Index]是undefined'。然而,如果盒子应该在周围动画并在点击时爆炸,它在我的结尾工作。 – Jasper

0

为什么不简单地提醒进入你的jQuery代码:

$('#child').click(function(){ 
alert('ok'); 
$(this).animate({ top: 200, left: 200 }, 2000); 
}); 
+0

对不起,也许我也不是很具体的。假设点击元素之外的东西触发了animate()运动。现在,虽然它已经在移动,但如果您尝试点击它,则该事件不会触发。 – aikeru

+2

那么在这种情况下,它会出现在元素的速度太快被点击 - 因为它是唯一的文字,它不可能你会是非常准确的,因为提到的其他答案。 –

1

它的工作。
可能,因为它是动态的,你也很难一下实际的元素(这是相当小)。
看看这里:http://jsfiddle.net/GA5Re/

+0

你是对的。谢谢你的回答 - 复制在这里:http://jsfiddle.net/M9udv/8/ – aikeru