#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
У меня есть ссылка, которая выглядит следующим образом:
<p class="half_text"><?php echo $upvotes; ?> <strong>
<a id="vote_up" style="color: #295B7B; font-weight:bold;" href="">Vote Up</a>
</strong> | <?php echo $downvotes; ?> <strong>
<a id="vote_down" style="color: #295B7B; font-weight:bold;" href="">Vote Down</a>
</strong></p>
и некоторый код jQuery, который я пытаюсь вызвать.
<script type="text/javascript">
$('#vote_up').click(function()
{
alert("up");
});
</script>
Но по какой-то причине предупреждение не срабатывает при нажатии ссылок «голосовать вверх» или «вниз». Есть идеи, что я делаю не так?
Вы можете убедиться в этом сами здесь: http://www.problemio.com
Комментарии:
1. Для начала измените ваши vote_up и vote_down на классы. У вас должен быть только один экземпляр идентификатора на странице, и я предполагаю, что jquery не использует тот, который вам нужен.
2. Среди других упомянутых проблем (пока все они выглядят актуальными) вам также необходимо
return false
из обработчикаclick
событий запретить навигацию по странице.
Ответ №1:
Вам нужно поместить свой код внутри .ready()
обработчика:
$(document).ready(function() {
$('#vote_up').click(function()
{
alert("up");
//Return false to prevent page navigation
return false;
});
});
Взгляните на .ready()
документы: http://api.jquery.com/ready /
Вот рабочий jsFiddle .
Комментарии:
1. Небольшое дополнение, но я бы установил href=»#», добавил «e» в качестве аргумента для анонимной функции, а затем вызвал
e.preventDefault()
. Выполнение этого устраняет необходимостьreturn false
в функции.
Ответ №2:
Оберните свой код в .ready()
обработчик. Ярлык $(function(){...})
:
$(function(){
$('#vote_up').click(function() {
alert("up");
});
})
эквивалентно $(document).ready(function(){....})
.
Ответ №3:
Не уверен, что это необходимо, но попробуйте поместить a #
в href
атрибут.
Кроме того, вы используете id
атрибуты для своих ссылок, когда на странице более одного из них, вы должны использовать class
вместо этого.
Комментарии:
1.
href
Атрибут не нужен: w3.org/TR/html401/struct/links.html#h-12.22. @davin на самом деле без атрибута href текст не превращался в ссылку. Знаете ли вы, почему это происходит?
3. @Genadinik,
href
это местоположение. Без указания местоположения, на которое можно указать, он на самом деле нигде не ссылается, поэтому браузер не отображает его как «ссылку» как таковую. Хотя это только для аспектов стиля, стандарт по-прежнему считает его допустимой разметкой.
Ответ №4:
Предполагается id
, что атрибут должен быть уникальным для всего документа. Если вы хотите, чтобы он применялся к нескольким элементам, рассмотрите возможность использования a class
вместо этого.
Ответ №5:
Не уверен, что это вызывает вашу проблему, но у вас есть дубликаты идентификаторов на вашей странице.
Попробуйте изменить ‘vote_up’ и ‘vote_down’ на классы.