2013-11-15 139 views
1

在此先感謝所有願意提供幫助的人。我的謎語是在jQuery中的鼠標移動效果 - 我試圖讓構建一個函數,將元素在容器中上下移動,無限期地。當盤旋時,移動應停止並保持停止,直到光標完全離開元件。儘管如此,mouseover事件觸發器仍然正常,但是,當光標仍然位於元素上方時,mouseleave事件會立即觸發,因此動畫會中斷。當遊標仍然在元素上時,jquery mouseout觸發器

這是一個簡單的HTML:

<div id="container"> 
    <div class="element">Some text</div> 
    <div class="element">Some other text</div> 
    <div class="element">Some more text</div> 
</div> 

的運動元素絕對是由JavaScript在上面元素定位和向下移動,並且向上,這裏的一對jsfiddle的例子

沒有任何人不得不面對這?謝謝

回答

0

我認爲你需要將你的mouseenter和mouseout事件放到你的動畫函數之外。每次調用動畫函數時,都會爲每個元素添加另一個鼠標事件。這會導致它在您將鼠標移出時多次調用您的動畫函數。

這裏是fiddle,我添加了一個計數器來查看動畫函數被調用的次數。

var counter = 0; 
function animate(el, dir) { 
    $("#count").val(counter); 
    counter++; 

將鼠標懸停幾次,您可以看到它每次滑出鼠標時都會混合動畫調用。

+0

好的,我將懸停觸發器移出了動畫函數,它確實停止了多個函數調用[jsfiddle](http://jsfiddle.net/aytech/LMkae/15/)的更新。然而,鼠標懸停效果仍然存在 - 當我將鼠標懸停在元素上時,鼠標懸停觸發器和鼠標懸停事件立即被觸發,即使遊標仍在元素上方。我試圖綁定懸停事件,但仍然沒有olove ...... :( – Oleg

+0

我認爲最新情況是當你的鼠標進入div.element你把指針元素的權利在其他div使你的鼠標,因爲你的鼠標現在在指針上,而不是div.element,如果你等到指針到達底部並懸停最後一個元素,然後不移動鼠標,鼠標進入,鼠標不會彈出,因爲你是鼠標進入指針 – Matt

+0

omg,你現在好了,我完全忘記了我正在把一個元素放在一個懸停的元素上,當然這個mouseout事件應該附加到移動的div上,我更新了[jsfiddle](http: //jsfiddle.net/aytech/LMkae/17/),它的工作原理現在已經解決了,謝謝Matt,感謝。 順便說一下,您對它的完成方式有什麼看法?是好的還是可以完成的更好嗎?我不是一個UI編碼器,只是試圖在我的手... :) – Oleg

相關問題