#javascript #jquery
#javascript #jquery
Вопрос:
Вот мой код, и ничего не происходит:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-git.js"></script>
<script>
$(".clickMe").click(function() {
alert('hi!');
// Do other stuff
});
</script>
</head>
<body>
<div class="clickMe">Click Me!</div>
</body>
</html>
Однако ничего не происходит, когда вы нажимаете на div «clickMe».
Спасибо!
Ответ №1:
Пусть документ будет готов
$(function(){
$(".clickMe").click(function() {
alert('hi!');
// Do other stuff
});
})
Как у вас было, div еще недоступен (DOM не загружен), поэтому обработчик кликов не добавлен. Вам нужно дождаться, пока документ будет доступен. Для этого следует использовать .ready().
$(document).ready(function() {...})
$(function() {...}) - Shortcut
Ответ №2:
Попробуйте обернуть код jQuery внутри этого:
$(document).ready(function() {
// Handler for .ready() called.
});
Когда вы выполняете существующий код в head, clickMe div не существует.
Ответ №3:
Попробуйте это:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".clickMe").click(function() {
alert('hi!');
// Do other stuff
});
});
</script>
</head>
<body>
<div class="clickMe">Click Me!</div>
</body>
</html>
Вы, сравнивая различия, найдете решение. В основном это строка: $ (document).готово(функция(){});
Ответ №4:
DOM еще не загружен при выполнении вашего кода JavaScript. Вы должны добавить код в .ready()
обратный вызов. Затем код выполняется, когда браузер анализирует HTML, и jQuery может найти элементы:
$(function() {
$(".clickMe").click(function() {
alert('hi!');
// Do other stuff
});
});
$(function(){..});
является сокращением для $(document).ready(function(){...})
.
Ответ №5:
Скрипт запускается еще до того, как .clickMe
элемент еще существует. Оберните свой код в dom-готовый обратный вызов:
$(function() {
$(".clickMe").click(function() {
alert('hi!');
// Do other stuff
});
});
Другим решением было бы переместить ваш скрипт ниже определения элемента, но использование события dom ready намного чище.
Ответ №6:
Проблема в том, что вы подключаете обработчик событий до того, как элемент будет отображен в DOM. Попробуйте это вместо:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-git.js"></script>
<script>
$(document).ready(function() {
$(".clickMe").click(function() {
alert('hi!');
// Do other stuff
});
});
</script>
</head>
<body>
<div class="clickMe">Click Me!</div>
</body>
</html>
Код передан в $(document).функция ready будет выполнена, как только страница будет полностью загружена — так что вы можете безопасно прикреплять события к еще не созданным элементам.
Ответ №7:
Вы просите jquery найти ваш clickMe
div до того, как он появится. Это находится ниже на странице, и браузер еще не загрузил его. Простое исправление — настроить обработчик кликов во время события document ready:
<script>
$(document).ready(function() {
$(".clickMe").click(function() {
alert('hi!');
// Do other stuff
});
});
</script>