Javascript 如何选择放置在带有appendChild的跨度内的img?

Javascript 如何选择放置在带有appendChild的跨度内的img?,javascript,jquery,picturefill,Javascript,Jquery,Picturefill,我正在使用picturefill.js(Scott Jehl): 以下是我如何使用span标记和数据属性进行设置(一些代码省略了b/c,这只是更多的媒体查询内容),如他的文档中所示: <figure> <a href='http://www.casaromeromexican.com'> <span id="picture" data-picture data-alt="Casa Romero Mexican website">

我正在使用picturefill.js(Scott Jehl):

以下是我如何使用span标记和数据属性进行设置(一些代码省略了b/c,这只是更多的媒体查询内容),如他的文档中所示:

<figure>
    <a href='http://www.casaromeromexican.com'>
        <span id="picture" data-picture data-alt="Casa Romero Mexican website">
        <span data-src="img/casa-romero-mexican.jpg"></span>
        <span data-src="img/casa-romero-mexican@2x.jpg" data-media="(min-device-pixel-ratio: 2.0)"></span>
        <span data-src="img/casa-romero-mexican-md.jpg" data-media="(min-width: 768px") </span> 
// and so on...
即使图像在页面上,也返回0。我希望它返回的大小为1,b/c。根据媒体查询,其中1个图像将附加到带有picturefill的页面

为了确保DOM加载没有问题,我将picturefill.js放在了页眉中(尽管js大部分时间都应该放在页脚中),甚至做了以下操作:

$(document).ready(function() {
        alert('ready!');
        alert(($('#picture').children().find('img').size()));
        });
仍然没有找到img

读了这篇文章后,我明白了为什么jQuery没有找到img。在本例中,有必要使用$(window.load(function(){…})。与只等待DOM的$(document).ready()相反,在加载整个页面之前,不会运行脚本


换句话说,$(document).ready()在大多数情况下都可以,但在等待加载和/或需要通过请求获取的媒体元素时就不行了

那么
$('#picture img')
怎么样?如果您想要最后一个,只需
$('#picture img:last')
就可以了,您有span标记,而不是img标记。。那么你为什么要搜索不存在的东西呢..你是在DOM中的
picturefill.js
之前加载包含
alert()
的文件吗?@HusseinNazzal picturefill在
span
中生成一个
img
标记。他包括了面向用户的HTML的外观,它有一个实际的
img
@elkirkmo,我添加了一个文档准备好了,另外一个警报可以确定,但它仍然没有找到img。我的头部也有picturefill.js(大多数时候我把js放在页脚)。因此,我认为“时机”不是问题所在。
alert(($('#picture').children().find('img').size()));
$(document).ready(function() {
        alert('ready!');
        alert(($('#picture').children().find('img').size()));
        });