2013-02-27 2 views
1

Я проверил много раз, но я понятия не имею, почему jQuery не будет работать. Он работает в jsfiddle!jQuery работает в jsfiddle, но не в html-файле?

HTML:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Josue Espinosa</title> 
<link href="style.css" rel="stylesheet" type="text/css"> 
<script src="animate.js"></script> 
<script src="http://code.jquery.com/jquery-latest.min.js" 
     type="text/javascript"></script> 
</head> 
<body> 
<div id="menu"> 

</div> 
</body> 
</html> 

CSS:

#menu{ 
    width:15px; 
    height:200px; 
    background:red; 
} 

JQuery:

$('#menu').hover(function(){ 
    $("#menu").stop().animate({width : "300px"}); 
}); 
+0

Вы можете указать содержимое, которое у вас есть в файле HTML? – BenR

ответ

2

Поскольку другие ответы не похожи на работу для вас, я собираюсь взять удар по предложению.

Я предполагаю, что вы инициализируете свой JavaScript в том месте, где элемент, добавляющий прослушиватель событий, пока недоступен. Вот решение этой проблемы.

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Josue Espinosa</title> 
    <link href="style.css" rel="stylesheet" type="text/css"> 
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
    <script src="animate.js"></script> 
</head> 
<body> 
    <div id="menu"> 
    </div> 
    <script type="text/javascript"> 
     $('#menu').hover(function() { 
      $("#menu").stop().animate({ width: "300px" }); 
     }); 
    </script> 
</body> 
</html> 

В этом примере JavaScript сразу ниже элемента, который вы хотите добавить слушателя, поэтому он гарантированно будет доступен в DOM.

В качестве альтернативы вы можете обернуть JS вокруг события, которое должно быть выполнено после того, как документ будет готов. Вот пример:

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Josue Espinosa</title> 
    <link href="style.css" rel="stylesheet" type="text/css"> 
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
    <script src="animate.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#menu').hover(function() { 
       $("#menu").stop().animate({ width: "300px" }); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <div id="menu"> 
    </div> 
</body> 
</html> 

Также важно отметить последовательность элементов JavaScript.

4

Вам нужно либо обернуть код JQuery в $(function() {}) или (предпочтительно) переместим код просто до </body>.

6

Похоже, что проблема лежит здесь:

<script src="animate.js"></script> 
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 

Вашего animate.js идет перед Jquery нагрузки

+0

Я изменил это, но он по-прежнему не работает:/ –

+0

ОК, посмотрим на него, brb – apoq

+1

он работает, когда я положил его внутренне прямо перед, но не тогда, когда он является внешним. –

Смежные вопросы