我正在从维基页面获取数据.我使用PHP和
jquery的组合来做到这一点.首先我在PHP中使用curl来获取页面内容并回应内容.文件名是content.PHP:
$url = $_GET['url']; $url = trim($url," "); $url = urldecode($url); $url = str_replace(" ","%20",$url); echo "<a class='urlmax'>".$_GET['title']."</a>"; echo crawl($url);
那么jQuery是用来找到匹配的元素.
$.get("content.PHP",{url:"http://en.wikipedia.org/w/index.PHP?action=render&title="+str_replace(" ","_",data[x]),title:str_replace(" ",data[x])},function(hdata){ var imgs = $(hdata).find('a.image img'); var ent = $(hdata).filter('a.urlmax'); ent = $(ent[0]).text(); });
当我使用find而不是filter时,我能够成功获取图像,但是对于变量ent,它返回一个空数组.只有过滤器正在工作.为什么是这样?
编辑:我知道find和filter之间的基本区别.这里a.image img和a.urlmax都是hdata的下降.那么为什么find不能在a.urlmax上工作.不是a.urlmax,它不会在任何其他类或id上工作
解决方法
.找()
http://api.jquery.com/find/
http://api.jquery.com/find/
Get the descendants of each element in the current set of matched elements,filtered by a selector,jQuery object,or element.
另一方面,过滤器适用于当前匹配的元素.这就是为什么过滤器工作,但发现没有(你需要看现在的元素).