По клику на элементе span срабатывает js-событие.
<div id="1" class="rating_block">
<span id="1" class="big_star"></span>
<span id="2" class="big_star"></span>
<span id="3" class="big_star"></span>
<span id="4" class="big_star"></span>
<span id="5" class="big_star"></span>
<span id="6" class="big_star"></span>
<span id="7" class="big_star"></span>
<span id="8" class="small_star"></span>
<span id="9" class="small_star"></span>
<span id="10" class="small_star"></span>
</div>
Затем блок успешно (структура дерева остаётся верной) переписывается функцией .html(«содержимое ajax-ответа»).
$(".rating_block").filter("#1:first").html('<span class=\"big_star\" id=\"1\"><\/span><span class=\"big_star\" id=\"2\"><\/span><span class=\"big_star\" id=\"3\"><\/span><span class=\"big_star\" id=\"4\"><\/span><span class=\"big_star\" id=\"5\"><\/span><span class=\"big_star\" id=\"6\"><\/span><span class=\"big_star\" id=\"7\"><\/span><span class=\"big_star\" id=\"8\"><\/span><span class=\"small_star\" id=\"9\"><\/span><span class=\"small_star\" id=\"10\"><\/span>');
После чего любые клики по span'ам перестают обрабатываться. Вот обработчик событий.
$(document).ready(function() {
$(".rating_block *").click(function() {
alert("Boo!");
$.post("/reports/update", { trip_id: $(this).parent().attr("id"), rating: $(this).attr("id") }, null, "script");
return false;
});
});
Использую Rails 3.1, jQuery 1.6.2.