jquery中查找和过滤器之间的区别

Kri*_*pak 25 jquery web-crawler find

我正在努力从维基页面获取数据.我正在使用phpjquery执行此操作的组合.首先我使用curlphp抓取页面内容,并呼应的内容.文件名是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);
Run Code Online (Sandbox Code Playgroud)

然后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();


});
Run Code Online (Sandbox Code Playgroud)

我能够成功获取图像但是当我使用find而不是filter时,它变量ent,它返回一个空数组.只有过滤器正常工作.为什么是这样?

编辑:我知道查找和过滤器之间的基本区别.这里的两个a.image imga.urlmax都是hdata.那么为什么发现不起作用a.urlmax.不仅仅是a.urlmax它不适用于任何其他类或id

Jer*_*ere 27

.find() http://api.jquery.com/find/

获取当前匹配元素集中每个元素后代,由选择器,jQuery对象或元素过滤.

另一方面,过滤器适用于当前匹配的元素.这就是为什么过滤器工作但找不到(你需要查看当前元素)的原因.


mpr*_*hat 20

filter 将从所选元素中选择元素的子集

find 将选择所选元素的后代/子项

为了使其更清晰,过滤器将搜索所有元素,而find将仅搜索后代列表