2011-11-18 191 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