Jquery:我的.load()有什么问题吗?

时间:2010-08-19 13:45:42

标签: jquery image select load drop-down-menu

我的代码有问题...
当此函数被触发时,预加载器会显示,但它永远不会隐藏。
页面也会在内部图像完成加载之前显示。

我的加载功能有问题吗?

$('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 个答案:

答案 0 :(得分:1)

如果在设置事件处理程序之后正在创建<img>元素,则需要使用 live()来绑定处理程序,这将绑定到与之匹配的现有和将来的元素页面上的选择器:

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

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

答案 1 :(得分:1)

如果<img> 已经具有src属性,则需要循环并检查它是否来自缓存,如下所示:

$('#page' + x + ' img').one('load', function() {
  $('#page' + x).show();
  $('#pageLoader *').hide();
}).each(function() { 
  if(this.complete) $(this).load();
});

答案 2 :(得分:0)

您需要提供一个网址作为load()功能的第一个参数。

请参阅documentation