Имейте в виду, что ваша функция обратного вызова из $ .post является асинхронной, поэтому вы теряете свой контекст без надлежащего кадрирования.Итак, это означает, что ваш $('a span')
просматривает весь DOM, и поэтому он заменяет все.
EDIT : Хорошо, Шеф раскалывает волосы, но заставил меня понять, что с помощью unbind (илиметод shef) по-прежнему не будет возвращать false при клике и, как таковой, будет иметь хороший эффект «к вершине» при нажатии на <a href="#">
.Этот код был обновлен, чтобы исправить это.
$("a.voteUp").click(function(){
//Set a local variable to the anchor that was clicked on for future use
var $this = $(this);
$.post(voteAction({postid: this.id, type: 'up'}), function(data){
$this.find("span").html(data);
//Unbind this "voteUp" button. This will remove the click handler and apply a class of "disabled"
$this.unbind('click').click(function() { return false }).addClass('disabled');
});
return false;
});
Теперь в вашем CSS:
.disabled { color: #999; }
Это сделает текст в «отключенных» элементах серым.