У jQuery нет ссылки

#javascript #file #reference

#javascript #файл #ссылка

Вопрос:

У меня есть ссылка. Мне нужно написать функцию щелчка для элемента при щелчке. итак, я написал код, подобный этому.

 <div class="tabCon">
  <ul>
    <li><a href="javascript:void(0);" id="Overview">Overview</a></li>
    <li><a href="javascript:void(0);" id="ProjDet">Project Details</a></li>
    <li><a href="javascript:void(0);" id="Directions">Directions</a></li>                                         
  </ul>
<div>
  

Я написал js-файл, в котором я написал так много функций.

 $('.tabCon > ul > li > a').click(function() { 
   alert('Link Clicked !');
});
  

Но это не сработает, когда я объявляю ссылку на этот файл JavaScript в разделе head.

Это работает, когда я объявляю под элементом или перед закрытием тега body

почему это происходит ? есть какие-либо другие способы?

Комментарии:

1. вы отлаживали этот скрипт? Есть сообщение об ошибке?

2. Можем ли мы увидеть ваше объявление head?

Ответ №1:

Убедитесь, что вы выполняете свой код jQuery внутри обработчика document.ready, если вы разместили его в разделе head, в противном случае DOM может быть еще не загружен и не готов к работе при попытке прикрепить обработчик щелчка к какому-либо элементу:

 $(function() {
    $('.tabCon > ul > li > a').click(function() { 
       alert('Link Clicked !');
    });
});
  

Ответ №2:

Потому что, если вы добавите его в head, элемент еще не был создан в DOM, поэтому вы не сможете получить к нему доступ как к объекту через JavaScript!

 $(document).ready(function () {
  $('.tabCon > ul > li > a').click(function() { 
   alert('Link Clicked !');
  });
});
  

Попробуйте вышеописанное!

Ответ №3:

Элемент не существует в DOM, когда анализатор находится в head, но к тому времени, когда он (анализатор javascript) достигает закрывающего тега body, он существует. Вот почему.

Ответ №4:

Убедитесь, что у вас есть вызов jQuery внутри вашего события document.ready.

В принципе, если вы пишете jQuery в головном блоке, оберните все это в

 $(function() {

//jquery code goes here

});
  

Ответ №5:

Вы поместили эту функцию $ («…»).click(…); в $(function(){ … } блокирует, поэтому он активен при загрузке страницы. Если нет, это нормально, что это не сработает.. Попробуйте поместить вашу функцию в $(function(){ … } заблокируйте, и это сработает.

Панель.