Here's the script I use to fix the in-page version SO currently outputs, replacing the SO version with this would resolve the favorites issue, (it can be optimized much further, trying to change as little as possible for the purposes of a fix patch):
$(function() {
$(".star-off")
.css("cursor", "pointer")
.attr("title", "This is a favorite question (click again to undo)");
$(".star-off:not(.disabled)").live('click', function() {
voteFavorite($(this));
});
});
function getPostId(jClicked) {
return jClicked.prev("input").val();
}
function voteFavorite(jClicked) {
var jFavoriteCount = jClicked.parent().find("b");
var count = parseInt("0" + jFavoriteCount.text().replace(/^\s+|\s+$/g, ""), 10);
if (jClicked.hasClass('star-on')) {
jFavoriteCount.css("color", "#808185").text((count-- <= 0) ? "" : count);
} else {
jFavoriteCount.css("color", "#D4A849").text(++count);
}
jClicked.addClass('disabled').toggleClass('star-on');
submit(jClicked, getPostId(jClicked), 5, function() {
jClicked.removeClass('disabled');
});
}
function submit(jClicked, postId, voteTypeId, callback) {
var formData = { "fkey": "FORMDATAKEYHERE" };
$.post("/posts/" + postId + "/vote/" + voteTypeId, formData, function(data) { callback(jClicked, postId, data); }, "json");
};