У меня есть сценарий jQuery, который помогает мне отмечать строки в таблице. Также у меня есть функция AJAX, которая позволяет загружать дополнительные данные в эту таблицу. Моя идея - вызвать функцию Picker каждый раз после того, как AJAX использовал, чтобы эти данные также были помечены. Он работает, но очень нестабилен - я могу отметить некоторые блоки загруженных данных и не могу отметить другие. И я не могу поймать, где я ошибаюсь.Функция вызова после загрузки AJAX
<script>
var Picker = function() { // This is marker script
$(".query, .schedule_query_table_highlight").click(function(){
if ($(this).attr("class") == "schedule_query_table_highlight") {
$(this)
.removeClass("schedule_query_table_highlight");
$(this).addClass("query");
}
else {
$(this).removeClass("query");
$(this).addClass("schedule_query_table_highlight");
}
});
};
$(document).ready(function(){
Picker();
$("#more").click(function(){
$(".more_space").load("inquery_ajax.php?date=" + curr_year + "-" + curr_month + "-" + curr_date, function(){
Picker();
});
$(".more_space").addClass("loaded" + days);
$(".more_space").removeClass("more_space");
$(".loaded" + days).after("<x class=more_space></x>");
$("#more").insertBefore(".more_space");
});
});
</script>
UPD: FIDDLE
'$ (" # more "). InsertBefore (". More_space ")' добавляет к странице несколько элементов с одинаковым идентификатором 'id', что является плохой идеей. Кроме того,' $ («# more»). не работает для динамически создаваемых элементов. – Regent
Возможно, вы создадите [скрипку] (http://jsfiddle.net), воспроизводящую вашу проблему, чтобы можно было исправить все ошибки. – Regent
Вы должны использовать делегирование делегирования с 'on()' вместо 'click()'. http://api.jquery.com/on/ И как сказал @Regent, у вас не может быть дублированного идентификатора, иначе у вас будут проблемы. –