Почему не удается вызвать эту функцию jQuery в Firefox?
У меня есть следующая строка кода в ссылке на моей веб-странице:
<a href="javascript:$('#comment_form').toggle('normal')" title="Comment on this post">
Это создает ссылку, которая должна открывать скрытую форму. Он работает в Safari, но в Firefox я просто получаю почти пустую страницу, на которой ничего нет, кроме следующего текста:
[object Object]
Я уверен, что это как-то связано со значением, возвращаемым функцией jQuery, но я не уверен, как исправить вызов функции JavaScript, чтобы она работала и в Firefox.
4 ответа
Ради любви...
<script type='text/javascript'>
jQuery(function($){ # Document ready, access $ as jQuery in this scope
$("a#comment").click(function(){ # bind a click event on the A like with ID='comment'
$('#comment_form').toggleClass('normal'); # Toggle the class on the ID comment form
return false; # stop the href from being followed.
});
});
</script>
....
<a id="comment" href="/you_need_javascript_sorry.html" title="Comment on this post">
[Comment]
</a>
Пожалуйста, не встраивайте JavaScript, как вы только что сделали в HTML.
Если вы встраиваете JavaScript в HTML, вы:
- Сделайте грязный код.
- Есть странные проблемы, как вы только что сделали с хаки, чтобы обойти это
- Пользователи, пытающиеся перейти по ссылкам среднего уровня, будут отправлены в никуда.
- Сохранение исполняемой части вашего кода, вкрапленной в ссылки на страницы, приведет к сбою.
- Не грациозно ухудшать, когда пользователи не имеют JavaScript
- Становится проблематичным, когда вы начинаете делать такие вещи, как хранить цитаты более чем в 2 слоя.
Пытаться:
<a href="javascript:void($('#comment_form').toggle('normal'))" title="Comment on this post">
Содержит сценарий внутри void()
запретит браузеру отображать результат выполнения.
Обновить
Я прямо ответил на исходный вопрос, решение которого потребовало бы наименьшего количества усилий. Как упомянуто в некоторых других ответах здесь, я лично разделил бы мою разметку и JavaScript и динамически добавил onclick
обработчик вместо встраивания скрипта в href
приписывать.
Пытался переместить то, что находится в href, чтобы нажать кнопку. В общем, вам следует избегать JavaScript-кода в атрибуте href.
Использование:
<a href="http://full-url-to-directory/page#comment_form"
onclick="$('#comment_form').toggle('normal');return false;"
title="Comment on this post">
Хотя вам нужно будет что-то сделать на сервере, чтобы при получении ссылки на элемент comment_form через запрос по умолчанию он был видимым. Это позволит (этой части) вашей странице работать без включенного JavaScript.