2013-04-24 123 views
1

我想抓取数据使用JavaScript和jQuery库。Javascript/jQuery - 刮IMG SRC

到目前为止这么好。我能够从标签之间刮取数据。例如,我想从<li>标签获取数据,我这样做如下:

stuff_found = $(data).find('li'); 

但是,如果我尝试使用下面的代码从<img>标签得到SRC,只返回第一个图像。

stuff_found = $(data).find('img').attr(); 

我需要知道如何返回完整列表(页面上的每个图像),而不仅仅是第一行。

回答

0

页面上的所有图片 ..?

$('li img').each(function(){ 
    var src = $(this).attr('src'); 
}); 

或者让他们的名单 -

var list = $('li img').map(function() { 
       return $(this).attr('src'); 
      }).get(); 
+0

我对此有些混淆,说实话。那时候我有'stuff_found = $(data).find('li');',然后在for循环中进行跟踪我使用'var value = stuff_found [i] .firstChild.nodeValue;'获取每个单独的值。我实际上想要做的是完全相同的事情,但我希望每个li元素中都有图像源。 – user1100149 2013-04-24 22:20:08

0
$('img').each(function(){ 
    alert($(this).prop('src')); 
}); 
3

最简单的方法是写的图像选择只拿到那些内部<li>标签。那么你可以用.each()或者,如果你真的只需要图像src属性值,.map()。例如:

var imageList = $('li img').map(function() 
{ 
    return $(this).attr('src'); 
}).get(); 

在这里的代码示例出现这种情况:

  1. 你第一次得到所有的都在里面<li>标签的影像 - 这$('li img')部分。
  2. 然后用.map()您应用一个函数来遍历所有这些函数并提取一个值。基本上,.map()所做的是它需要一个列表,将给定的函数应用于列表的所有元素,并返回带有新处理元素的结果列表。
  3. $(this).attr('src')的部分从图像标签中获取实际的src值。
  4. 最后,因为jQuery返回它自己的数组类型而不是标准的javascript数组,所以您需要执行.get() - 这是将返回的对象从jQuery数组转换为标准数组的原因。