#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(){ … } заблокируйте, и это сработает.
Панель.