0

我有这样的html数据:

<div class="class1">...</div>
<div class="class1 class2">...</div>
<div class="class3">...</div>
...
<div class="class1">...</div>
<div class="class1 class2">...</div>
<div class="class3">...</div>

我怎样才能得到带有class1的div,然后是带有class2的div?

我试过这样的方式:

var divs = $(data).find('.class1');

但它返回空数组。

我尝试了其他方式:

var divs = $(data).filter('.class1');

但它返回了数组

[div.class1, div.class1, ..., div.class1]. 

所以,我找不到里面有“class2”的div,因为“class2”丢失了……太奇怪了……

有人有想法吗?谢谢!

4

3 回答 3

1

当您调用filter一个集合时,您只会获得与该过滤器匹配的元素。但是,原始集合没有被修改。

您所要做的就是将原始集合存储在一个变量中,并在您想要过滤时参考它.class2

var all = $(data),
    class1 = all.filter('.class1'),
    class2 = all.filter('.class2');
于 2011-09-20T19:32:06.400 回答
1
$("div[class*='class1']");

要进行测试,请运行以下代码:

var divs = $("div[class*='class1']");

divs.each(function() {
    alert($(this).text());
});
于 2011-09-20T19:45:14.513 回答
0

不起作用的原因find可能是因为您的 HTML 字符串没有根元素,因此搜索是在每个元素内部执行的。如果您将 HTML 包装在包含元素中,find则应该可以。

于 2011-09-20T19:31:10.763 回答