Javascript 如何选择放置在带有appendChild的跨度内的img?
我正在使用picturefill.js(Scott Jehl): 以下是我如何使用span标记和数据属性进行设置(一些代码省略了b/c,这只是更多的媒体查询内容),如他的文档中所示: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">
<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()));
});