2011-05-10 214 views
2

我使用PHP和ajax命令来获取外部网页的全部HTML内容(通过PHP file_get_contents()命令),并将该HTML传递给JavaScript变量。 使用该变量中的HTML内容,我现在试图选择&提取该变量中的某些元素。 我尝试使用.filter()函数,例如jQuery:.filter()返回的元素数量比预期的少?

$(myHTML).filter('#someID').doStuff(); 

.filter()命令似乎并没有准确地过滤我的选择。

它工作在某些情况下

$(myHTML).filter('title').text(); 

但它似乎没有试图选择多个元素时工作。 例如,如果我试图让所有的<div><a>标签的数量,我不断收到零

alert($(myHTML).filter('a').length) 

即使有75个<a>标签在这个例子中。

当试图获得所有<div>标签的计数时,会发生同样的情况:上面的代码只返回零。

任何人都可以解释为什么发生这种情况,我能做些什么来解决这个问题?

+1

很难读到你的问题,所以我重新格式化了它8 ^) – mcgrailm 2011-05-10 16:52:11

回答

5

过滤器只会返回已过滤的顶层元素,不会遍历子元素。使用find()来代替。

+4

新jQuery编码器的常见问题,['.find()'](http://api.jquery.com/find/ ),['.filter()'](http://api.jquery.com/filter/)和['.children()'](http://api.jquery.com/children/)。 – Orbling 2011-05-10 16:52:09

+1

@Orbling:感谢您的链接,我只是用我的手机喂我对公共汽车的痴迷,并且在触摸屏上添加额外的功能并不容易。:) – DarthJDG 2011-05-10 16:59:15

+0

Aye,绝对很费劲 - 大多数人似乎都有一般提供链接的麻烦。可能是因为它减慢了你的速度,最终人们在你面前发帖。 – Orbling 2011-05-10 17:13:56