Это потому, что .each()
циклически перебирает подходящие элементы, когда он был запущен ... новые элементы не были там, чтобы что-то делать, когда вы вызывали его. Решение: вызовите его снова, но только для новых элементов, когда вы добавите их. Вам нужно вызвать тот же .each()
для вашего результата ajax с контекстом результата, чтобы ограничить его каждым.
Например, если у вас есть это в настоящее время:
$(".myDiv").each(function() {
//stuff here
});
Вам нужно вызвать тот же селектор и тот же код в вашем успехе (или завершить, независимо от того, что вы используете) ajax-функцию, как это:
success: function(resp) {
$(".myDiv", resp).each(function() { //each, but only on the new guys
//stuff here (same as before)
});
//Do more stuff with your response...
}
Ключ здесь - бит , resp
, он сообщает jQuery выбрать те же элементы, что и раньше, но только внутри контекста во втором параметре , в данном случае: ваш ответ ajax, содержащий новые элементы, которые нуждаются в любви.
Обновление на основе нового кода вопроса
Во-первых, вы можете сократить свой код здесь (необязательно) :
$('#chk-selected').change(function(){
if($(this).is(':checked')) {
$(".lib-item.item-selected").slideDown('fast');
}
else {
$(".lib-item.item-selected").slideUp('fast');
}
});
В обратном вызове запустите тот же обработчик для повторного запуска (это не изменит выбор, просто запустите обработчик) :
onComplete: function(event, queueID, fileObj, response, data)
{
$(".blank").remove();
$("#lib-contentWrap").append(response);
$('#chk-selected', response).trigger('change');
}