2012-01-01 138 views
1

我:鼠標懸停一旦不工作

<html><head> 
<script type="text/javascript" src="jquery-1.7.min.js"></script> 
<script type="text/javascript"> 
$("#hoverit").one("mouseover", function(){ 
$("#tomato").append('t'); 
}); 
</script> 
</head><body> 
<div id="hoverit">hover over this</div> 
<div id="tomato">mmm</div> 
</body></html> 

我試圖讓鼠標懸停做一個動作只有一次使用jQuery one命令,它不工作...

任何想法?

+2

您試圖綁定事件的事件元素存在之前的處理程序。這包括在['jQuery入門教程](http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery)中。 – 2012-01-01 09:37:08

回答

1

嘗試:

<html><head> 
<script type="text/javascript" src="jquery-1.7.min.js"></script> 

</head><body> 
<div id="hoverit">hover over this</div> 
<div id="tomato">mmm</div> 
</body> 
<script type="text/javascript"> 
$("#hoverit").one("mouseover", function(){ 
$("#tomato").append('t'); 
}); 
</script> 
</html> 
+0

哇!它的工作......但爲什麼? – David19801 2012-01-01 09:38:25

+0

'$(「#hoverit」)。one(「mouseover」,function(){'應該在創建後出現,除非您使用live(或1.7+中的'on') – 2012-01-01 09:39:03

+0

@ David19801:因爲元素已經存在於代碼執行的時間,HTML從上到下被解析。 – 2012-01-01 09:39:33

0

要麼使用@Royi納米爾的解決方案,是把JS在你的HTML結束或使用ready處理,你的代碼是不工作的原因是因爲其發射時的DOM還沒有準備好或者元素已向其一定到沒有創建時的處理程序代碼火災,解決的辦法是把JS在年底或使用$(document).ready();

<script type="text/javascript"> 
$(document).ready(function(){ 
$("#hoverit").one("mouseover", function(){ 
$("#tomato").append('t'); 
}); 
}); 
</script>