Если у вас нет веских причин для установки class
и ID
на элемент img
, я бы предложил использовать код более аккуратного html
.В конце концов, не имеет смысла применять .preventDefault()
к тегу img
, так как событие не ожидается, в этом случае для этого используется тег <a>
так:
<div class="main">
<div class="party">
<a id="1001" class="vote" href="#"><img src="http://2.bp.blogspot.com/_XeuZ1yDnv4Q/TSUkAT6T1dI/AAAAAAAADR8/nPHP4JvVxy8/s1600/vote.jpg"></a>
<p class="votenums"> 20 votes.</p>
</div>
<div class="party">
<a id="1002" class="vote" href="#"><img src="http://bgathinktank.files.wordpress.com/2011/01/vote-button.jpg"></a>
<p class="votenums"> 30 votes.</p>
</div>
</div>
Обратите внимание, что я установил разные ID
для каждой ссылки выше, так как не рекомендуется использовать один и тот же ID
для двух разных элементов в одном и том же документе.IDs
должен быть уникальным.
Тогда лучшим вариантом будет обновление до jQuery v1.7.x (если вы этого еще не сделали) и использование jQuery .on()
вместо.live()
.Вы найдете это на сайте jQuery:
Начиная с jQuery 1.7, метод .live()
устарел.Используйте .on()
для присоединения обработчиков событий.Пользователи старых версий jQuery должны использовать .delegate()
вместо .live()
. ... есть также хорошая статья для прочтения здесь
Тогда вы можете использоватьменее дорогая функция, такая как
$(function() {
$(".vote").on("click", function(e) {
e.preventDefault();
$(this).next('.votenums').text("changed text");
});
});
И, наконец, CSS тоже нужно немного подправить
.vote img{
height:70px;
width:70px;
}