Обновление DOM для jquery после использования ajax?
Здравствуйте.
Всем наверное известна проблема что если сгенерировать ссылку или отобразить её на странице после ajax запроса то обработчик события нужно писать через .on (раньше через .live)...и все бы хорошо))
Но такой вопрос, а если мне нужно не событие....
Например я загружаю html разметку слайдера аяксом и к этой разметке нужно применить инициализацию слайдера...
Если этот код продублировать после отображения загруженного нового html, то ничего не происходит...будто бы #services_slider не существует.
@DeLaVega ну тем что тянуть инициализацию внутри ответа можно во первых понять по разному во вторых тануть по разному. Напримет я бы мог понять что тяну нициализацию внутри ответа примерно так.
$.ajax({url: "...", ...}).done(function(html){
$('#something').html(html);
var services_slider = new skewSlider('#services_slider', {...});
});
а почему используете .done а не success: function(data){ ... } ?
Потому что это то как правильно делать используюя промисы. Но можено и суксес использовать. Тоже будет работать.
а как в .ajax получить данный не всей страницы в url а только определённого айди?
Можно потом
$.ajax({url: "...", ...}).done(function(html){
var something $(html).find('#my-id');
$('#something').html(something);
var services_slider = new skewSlider('#services_slider', {...});
});
если в .ajax, .post нельзя сразу выбрать контент по селектору возможно лучше использовать .load который поддерживает загрузку не всего файла, а содержимое селектора, как думаете?
Честно сказатьне когда не проверял что быстрее. Не было таких больших приложений где бы это играло болшую роль, так что по поводу скорости ни чего не могу посоветовать. Попробуйте то и то и попрофилируйте в инспекторе, посмотрите что ест больше процессора. Но мне кажется разници не будет. Используйте то что вам удобно.
И к стати load выбирает в какой селектор загрузить а не какой селектор выбрать в полученом html.
записать - $("#area").load("page.html #area > *"); загрузит сторонний файл но не весь а только то что находится в id="area" и загрузит это в id="area" текущего документа.