2012-06-23 36 views
1

這是HY頭底部的樣子:jQuery的反彈不點火

$('#hello').mouseenter(function() { 
$(this).effect("bounce", { times:1, distance:10 }, 800); 
}); 

我鏈接到的jQuery 1.7.2和jQuery UI 1.8。我沒有收到任何錯誤,但是當我將鼠標懸停在#hello div上時,什麼都沒有發生。 任何想法?

謝謝!

+2

你把上面的代碼裏面'$(文件)。就緒(....'?它的工作這裏罰款http://jsfiddle.net/joycse06/7dgaB/ –

+0

嗨,快樂,我覺得這是某種負載交易。我沒有$(document).ready() 谷歌搜索。是的。謝謝! –

+0

檢查上面的鏈接,並將該javascript代替。我正在添加一個答案。 –

回答

2

您的jQuery代碼看起來很好,所以這是最有可能你已經錯過了document ready

所以添加像

$(function() { 

    $('#hello').mouseenter(function() { 
     $(this).effect("bounce", { 
      times: 1, 
      distance: 30 
     }, 800); 
    }); 
});​ 

doc ready處理器將確保當DOM準備好該代碼會火。

如果您只是使用$("#hello").mouseenter(...)而沒有任何doc ready block,那麼在運行此代碼時,如果DOM中沒有任何含有id hello的元素,則有機會。所以$("#hello")將返回一個空集和mouseenter綁定將無法正常工作。

一個例子的標記時它不會不doc ready block工作,

. 
. 
. 
<script type="text/javascript"> 
    $("#hello").mouseenter(....); 
</script> 
. 
. 
. 
. 
<div id="hello">Blah Blah....</div> 

如瀏覽器,解釋的標記順序,因爲它面對它它將立即執行JS代碼。當它在這裏執行JS塊時,它還沒有解析<div id="hello">標籤,因爲它出現在JS塊之後,所以它們不在DOM那一刻。

因此,對於上述情況$("#hello")是空的,因此事件綁定將不起作用。因此,它總是安全的把所有的JS代碼裏面document ready塊像

$(function){ 
    // put all your JS code here 
}); 

更多http://api.jquery.com/ready/

+0

非常感謝你的快樂。這非常有幫助!不幸的是,我還不能滿足,但我會收藏這個,並在可以的時候回來。 –

+0

@VGD,非常歡迎閣下,很高興能夠提供幫助。 –