Jquery: Что-то не так с моим .load ()? - PullRequest
0 голосов
/ 19 августа 2010

У меня проблема с этим кодом ...Предварительный загрузчик появляется, когда эта функция активирована, но никогда не скрывается.Страница также отображается до того, как изображение внутри нее будет загружено.

Что-то не так с моей функцией загрузки?

$('select.select').change(function() {

    var x = $(this).val();

    //Hide the current page and show the preloader
    $('#page' + x).hide();
    $('#pageLoader *').show();

    //when current page is loaded, hide preloader and show page
    $('#page' + x + ' img').load(function() {
      $('#page' + x).show();
      $('#pageLoader *').hide();
    });

});

Ответы [ 3 ]

1 голос
/ 19 августа 2010

Если <img> уже имеет атрибут src, вам необходимо выполнить цикл и проверить, не происходит ли это из кэша, например:

$('#page' + x + ' img').one('load', function() {
  $('#page' + x).show();
  $('#pageLoader *').hide();
}).each(function() { 
  if(this.complete) $(this).load();
});
1 голос
/ 19 августа 2010

Если элемент <img> создается после того, как установлен обработчик события, вам нужно связать обработчик, используя live () , который будет привязывать существующие и будущие элементы, соответствующие селектору настраница:

$('#page' + x + ' img').live("load", function() {
  $('#page' + x).show();
  $('#pageLoader *').hide();
});

http://api.jquery.com/live/

0 голосов
/ 19 августа 2010

В качестве первого параметра функции load() необходимо указать URL-адрес.

См. документацию .

...