#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
Я загружаю содержимое, в основном изображения, с помощью этого вызова ajax и хотел бы отключить div только тогда, когда все изображения будут полностью загружены. По этой причине я подумал, что мне следует использовать .ready, чтобы весь контент был загружен до того, как я использую jquery для его затухания, но по какой-то причине изображения загружаются не полностью, когда div затухает, что создает впечатление, что он не ожидает загрузки всего.
Я в основном хочу создать предварительную загрузку для этого содержимого AJAX
function getPage() {
var data = 'page=' encodeURIComponent(document.location.hash);
$.ajax({
url: "loader.php",
type: "GET",
data: data,
cache: true,
success: function (html) {
$('#content').html(html);
$("#slider").easySlider();
$(this).ready(function() {
$('#body').fadeIn('slow');
$('#loader').fadeOut('slow');
});
}
});
Заранее благодарю вас за помощь. Я все еще новичок.
пример:
Комментарии:
1. В вашем примере кажется, что поведение соответствует задуманному. Не могли бы вы, пожалуйста, предоставить дополнительные сведения?
2. Проблема в том, что пользователь сможет видеть изображения, загружаемые после выбора раздела. Я хочу, чтобы изображения уже были загружены до того, как div исчезнет. Хотя, возможно, это неправильный способ сделать это. Надеюсь, это прояснит ситуацию.
Ответ №1:
Редактировать: О, теперь я понимаю, в чем ваша проблема!
Когда запускается функция success(), вы должны добавить .событие загрузки к изображениям внутри #content!
Вы должны сделать что-то вроде этого
function getPage() {
var data = 'page=' encodeURIComponent(document.location.hash);
$('#loader').fadeIn('slow');
$.ajax({
url: "loader.php",
type: "GET",
data: data,
cache: true,
success: function (html) {
$('#content').html(html);
$("#slider").easySlider();
$('#content img').load(function(){
$('#body').fadeIn('slow');
$('#loader').fadeOut('slow');
});
}
});
}
Комментарии:
1. Попробуйте новое решение, пожалуйста.
2. Еще раз спасибо за ответ. Возможно, это совсем другой вопрос, но я ссылаюсь на динамический div, который вызывается с помощью ajax, что не позволяет мне напрямую ссылаться на изображения. Изображения в каждом случае находятся внутри div #slider. Я попробовал следующую функцию загрузки…. $(‘#slider’).load(функция(){… и т.д. И это никогда не попадает внутрь функции. Еще раз спасибо за помощь. Я не уверен, что это еще больше запутывает вещи или упрощает их.
3. Я полагаю, что при загрузке слайдера отображается только 1, поэтому, возможно, вам следует попробовать $ («#slider img:first»).load(функция(){})
4. Проблема в том, что в каждом случае будет передаваться другое первое изображение. Итак, это выглядит так … и будет примерно 10 случаев… Еще раз спасибо, что поддерживаете меня.
5. Нет проблем, этот код работает в любом случае. Попробуйте и опубликуйте демо.