#javascript #jquery #html #addclass
#javascript #jquery #HTML #addclass
Вопрос:
У меня возникли проблемы с реализацией эффекта jQuery .addClass()
.
Скрипт, который я пытаюсь использовать, выглядит следующим образом:
<script>
$(function(){
$('#top_right_size_large').click(function(){
$('#primary').addClass('large_content');
});
});
</script>
Я просмотрел документацию и проверил все свои скобки, но по какой-то причине это не добавляет .класс large_content при нажатии на привязку #top_right_size_large. Есть идеи, почему это не сработает так, как я ожидаю?
Комментарии:
1. Откуда вы знаете, что он не добавлен? Вы посмотрели на DOM? Существуют ли элементы с идентификатором
primary
илиtop_right_size_large
? Ваш код работает нормально: jsfiddle.net/fkling/wcTz5 поэтому я предполагаю, что ваш HTML неверен или добавление класса просто визуально ничего не меняет.2. Да, все они существуют — здесь нет никаких опечаток. Я знаю, что он не добавляется, потому что я смотрю с помощью firebug. Кроме того, не применяется ни один из стилей, связанных с этим классом.
3. Смотрите мою правку. Ваш код работает нормально: jsfiddle.net/fkling/wcTz5 Не могли бы вы предоставить ссылку на страницу? Или опубликовать HTML?
Ответ №1:
Просто предположение, у вашего якоря есть href, и при нажатии он перезагружает страницу, попробуйте изменить код, как показано ниже:
<script>
$(function(){
$('#top_right_size_large').click(function(e) {
e.preventDefault();
$('#primary').addClass('large_content');
});
});
</script>
Комментарии:
1. Это хорошая догадка, я всегда забываю изменить href.
2. @Thomas: Еще лучше: если вы не используете ссылку как ссылку, то есть она не ссылается на другой сайт, используйте кнопку.
Ответ №2:
Очевидно, что при добавлении кода перед тегом скрипт не будет работать. Я переместил код под тегом, и все работает нормально. Спасибо за все предложения!
Комментарии:
1. Это должно сработать, потому что вы передаете обратный вызов
document.ready
событию. Т.е. код запускается после загрузки DOM. Или, может быть, это не тот код, который у вас есть? В моем примере jsfiddle вы можете видеть, что код добавлен в начало страницы (то есть перед элементами), и это работает.2. Я не использовал document.ready — вот почему его нужно было загрузить после содержимого. Спасибо, что помогли мне устранить это.
3. Ну, в вашем коде вы делаете.
$(function(){...})
является сокращением для$(document).ready(function(){...})
. Но в любом случае….
Ответ №3:
Включите javascript:void(0);
в свой href
, чтобы предотвратить любую навигацию
<a id="op_right_size_large" href="JAVASCRIPT:VOID(0);">..</a>