对于单级 DOM,这将很好地工作:
var links = $(content).filter('img').map(function() {
return this.src;
}).toArray();
console.log(links); //["http://website.com/image.jpg", "http://website.com/image2.jpg", "http://website.com/image3.jpg"]
小提琴
如果您有多个级别的 DOM(其他元素内的嵌套图像),请将第一行更改为:
var links = $('<div>').append(content).find('img').map(function() {
此外,如果你正在抓取任意数据,你应该使用$.parseHTML
(jQuery 1.8+) 来避免 XSS。
这是完整、坚固的版本:
var links = $('<div>').append($.parseHTML(content)).find('img').map(function() {
return this.src;
}).toArray();
在上面的示例中,我将内容附加到一个动态创建的div
元素中,这样我就可以只执行一个find
操作。结果与@Explosion Pills 的.find('img').addBack().filter('img')
变体相同。
此外,显然,如果您已经在页面中拥有图像,您可以使用一个共同的祖先作为根,.find()
而不是创建新的 DOM 元素:
var links = $('#imagesParent').find('img').map(function() {