Вам нужно использовать .live('click', ...)
вместо .click(...)
. Первый работает для всех элементов, соответствующих этому селектору, теперь и в будущем , тогда как последний работает только для элементов, соответствующих селектору прямо сейчас .
Дело не в том, чтобы ajax "видеть" старый класс, а в том, как связаны слушатели событий. $(".follow").click(callback)
находит все элементы в DOM, которые имеют класс follow
, а затем связывает callback
с событием click
каждого такого элемента. Удаление класса follow
не удаляет прослушиватели событий.
.live()
также связывает только одного слушателя, а не одного слушателя на элемент в объекте jQuery, поэтому он более «эффективен» (читай: меньший вес) в этом отношении.
$(".follow").live("click", function() {
var element = $(this),
data = "id=" + this.id;
$.ajax({
type: "POST",
url: "follow.php",
data: data,
success: function(result) {
element.removeClass("follow").addClass("unfollow");
}
});
return false;
});
$(".unfollow").live("click", function() {
alert("Hey, dude");
});
Примечания