2012-03-27 27 views
0

我有以下代码:的jQuery/JavaScript的:图片不加载

all_images = new Array(Array); 
$.get('../dotclear-files/themes/biblio/js/dynamic_ajax_php.php', function(data) { 
    var w = 0; 
    $(data).find('image').each(function() { 
     if (!all_images[w]) all_images[w] = new Array(); 
     all_images[w]['url'] = $(this).find('url').text() + '#comments'; 
     all_images[w]['src'] = $(this).find('src').text(); 
     all_images[w]['title'] = $(this).find('title').text(); 
     all_images[w]['width'] = $(this).find('width').text(); 
     all_images[w]['height'] = $(this).find('height').text(); 
     w = w + 1; 
    }); 
    $("#carousel-comments").append('<ul></ul>'); 
    for (x=0; x<3; x++) { 
     $('#carousel-comments ul') 
      .append('<li>') 
      .append('<a href="' + all_images[x]['url'] + '#comments" title="' + all_images[x]['title'] + '">') 
      .append('<img alt="' + all_images[x]['title'] + '" class="jcarousel-img jcarousel-img-' + x + '" width="' + all_images[x]['width'] + 'px" height="' + all_images[x]['width'] +'px" />') 
      .append('</a>') 
      .append('</li>'); 
     var img = new Image(); 
     $(img) 
      .load(function() { 
       $('.jcarousel-img-' + x) 
        .attr({'src': all_images[x]['src'], 'alt': all_images[x]['title']}) 
        .fadeIn(); 
       }) 
      .attr('src', all_images[x]['src']); 
    } 
    $('#carousel-comments').jcarousel('reload'); 
}, 'xml'); 

此代码加载图像的PHP脚本中,返回的XML文件中的第一部分。这部分工作正常。

问题出现在第二部分:$(img).load(...)它从不显示我的图像。

这可以看出on my test page:这是第3个旋转木马,名为“C'est vous qui le dites!”。我们可以看到显示图像的标题...但图像本身未加载。

我在做什么错?

Thanx的任何帮助!

回答

0

我认为您必须将<img>附加到传送带上。

$(img).appendTo($("#carousel-comments")); 

或者类似的东西。

编辑的意见交换后:

LI元素<IMG>是不一样的,你var img = new Image。然后尝试这样的事情:

for (x=0; x<3; x++) { 
    var img = new Image(); 
    img.load(function() { 
     $(this).fadeIn(); 

     // Also, set your carousel here   
    }); 

    img.attr('alt', all_images[x]['title']) 
     .attr('width', all_images[x]['width']) 
     .attr('height', all_images[x]['height']) 
     .addClass('jcarousel-img jcarousel-img-' + x) 
     .attr('src', all_images[x]['src']); 

    $('#carousel-comments ul') 
     .append('li') 
     .append('<a href="' + all_images[x]['url'] + '#comments" title="' + all_images[x]['title'] + '">') 
     .append(img); 
} 
+0

嗯......我不这么认为,因为图像本身已经附加到它(参见$('#carousel-comments ul')。append等)所以我所要做的就是设置“alt”和“src”属性.. – user1296220 2012-03-27 17:43:44

+0

没错,我只是看到了这个...但是为什么你不把“src”直接放在你的图像中? – Akarun 2012-03-27 17:45:10

+0

我不明白你的意思:我想要的是等待图像完全加载之前设置“src”属性,以便该图像只在满载时显示...你认为还有另一个如何实现这一目标? – user1296220 2012-03-27 17:50:02